私はオブジェクトリストを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);
}
?>
いくつかの賢明なコードインデンです:前の値がクエリにバインドされませんので、各反復の欠落しているプロパティに
null
を割り当て法案は良い考えであろう。それは私たちがコードを読むのに役立ちます。もっと重要なのは**コードをデバッグするのに役立つでしょう** [コーディング標準を簡単に見てください](http://www.php-fig.org/psr/psr-2/ )あなた自身の利益のために。あなたはこのコード を数週間/数ヶ月で修正するように頼まれるかもしれません。そして、あなたは私に最後に感謝します。 – RiggsFolly多くのプロパティがあり、多くのヌル値が必要な場合は、テーブルを再構成して可変プロパティを持たせるのはなぜですか?例えば、 'id | object_id |プロパティ名| property_value'? –
'get_magic_quotes_gpc()'は何年も前から 'false'を返すようにハードコードされています。本当に古いサーバーを使用していない限り、安全に削除することができます。また、あなたのIDは文字列ですか? "ssss"はそれがそうであることを示唆している。 – miken32