2016-08-02 5 views
0

私はオブジェクトリストをMySQLにアップロードしています。 一部のオブジェクトには同じ数の変数が含まれていません。たとえば、Mysqlでオブジェクトプロパティをnullに設定する方法

Objectt1 { 
property1 
property 2 
} 

Objectt2 { 
property1 
property2 
property3 
} 

Objectt3 { 
property1 
} 

私の問題は、mysqlのObject3にNULLの代わりにproperty2とproperty3が与えられていることです。値はObject2から取得されています。オブジェクト3のpropery2とproperty3をnullにするにはどうすればよいですか?次のようにPHPのコードは次のとおりです。(。。変数は、ループの前回の実行中にすでにISSETされているので、私は、それがこれを行う理由を私は理解してだと思うしかし、私はそれを修正する方法がわからない)

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 


if($_SERVER["REQUEST_METHOD"] == "POST") { 
    require 'connection.php'; 
    uploadstart(); 
} 

function uploadstart() { 
    global $connect; 

    $json = $_POST["objectlist"]; 

    //Remove Slashes 
    if (get_magic_quotes_gpc()){ 
     $json = stripslashes($json); 
    } 

    $createworkoutquery = $connect->prepare("INSERT INTO objectTable 
               (id, prop1, prop2, prop3) 
             VALUES (?, ?, ?, ?)"); 

    $createworkoutquery->bind_param("ssss", $ID, $prop1, $prop2, $prop3) ; 
    //convert json object to php associative array 
    $data = json_decode($json, true); 

    //Util arrays to create response JSON 
    $a=array(); 
    $b=array(); 

    // loop through the array 
    foreach ($data as $row) { 
     // get the list details 
     $ID = $row["id"];  
     $prop1 = $row["prop1"]; 

     if (isset($row["prpop2"])) { 
      $prop2 = $row["prop2"]; 
     } 

     if (isset($row["prop3"])) { 
      $prop3 = $row["prop3"]; 
     } 


     // execute insert query 
     $result = $createworkoutquery->execute(); 

     //if insert successful.. plug yes and woid else plug no 
     if($result){ 
      $b["id"] = $ID; 
      $b["status"] = 'yes'; 
      array_push($a,$b); 
     } else { 
      $b["id"] = $ID; 
      $b["status"] = 'no'; 
      array_push($a,$b); 
     } 
    } 

    echo json_encode($a); 

    //close connection 
    mysqli_close($connect); 

} 
?> 
+1

いくつかの賢明なコードインデンです:前の値がクエリにバインドされませんので、各反復の欠落しているプロパティにnullを割り当て法案は良い考えであろう。それは私たちがコードを読むのに役立ちます。もっと重要なのは**コードをデバッグするのに役立つでしょう** [コーディング標準を簡単に見てください](http://www.php-fig.org/psr/psr-2/ )あなた自身の利益のために。あなたはこのコード を数週間/数ヶ月で修正するように頼まれるかもしれません。そして、あなたは私に最後に感謝します。 – RiggsFolly

+1

多くのプロパティがあり、多くのヌル値が必要な場合は、テーブルを再構成して可変プロパティを持たせるのはなぜですか?例えば、 'id | object_id |プロパティ名| property_value'? –

+0

'get_magic_quotes_gpc()'は何年も前から 'false'を返すようにハードコードされています。本当に古いサーバーを使用していない限り、安全に削除することができます。また、あなたのIDは文字列ですか? "ssss"はそれがそうであることを示唆している。 – miken32

答えて

2

私が気づい

foreach($data as $row){ 
    $ID = $row['id']; 
    $prop1 = isset($row['prop1'])? $row['prop1']: null; 
    $prop2 = isset($row['prop2'])? $row['prop2']: null; 
    $prop3 = isset($row['prop3'])? $row['prop3']: null; 

    $result = $createworkoutquery->execute(); 
    ... 
} 
+0

秒でそれを打つ+1 – RiggsFolly

+0

@RiggsFollyそれは頻繁に起こることはありません – BeetleJuice

+0

それは私にやりますか?+1 – RiggsFolly

0

ことの一つは、mispellingのprpop2

if (isset($row["prpop2"])) { 
    $prop2 = $row["prop2"]; 
} 
関連する問題