jstreeを使用しています。ツリーはうまくいきます.JQueryを使ってJSONをPHPファイルに送ります。これは正常に動作します。JSONを使用してPHPでMYSQLテーブルを更新する方法
$("#button3").click(function(){
//json object
var objtree = $("#container").jstree(true).get_json('#', { 'flat' : true });
var fulltree = JSON.stringify(objtree);
var myarray = $.parseJSON(fulltree);
var params = { myarray: myarray };
var paramJSON = JSON.stringify(params);
//sending to php file
$.post('update.php',{ data: paramJSON });
});
そして、PHPファイル(update.phpを)で、私はしてMySQLのテーブルを更新します。$テーブル名($ SQL1)内のすべてのレコードを削除し、JSON($ SQL2)から得た情報を挿入します。これは正常に動作します。
<?php
$connection = mysqli_connect($servername, $user,$password,$database) or die("Error " . mysqli_error($connection));
$test = $_POST["data"];
$obj = json_decode($test, true);
$data = $obj["myarray"];
//first query
$sql1 = "DELETE FROM $tablename";
$connection ->query($sql2);
foreach($data as $val){
//second query
$sql2 = "INSERT INTO $tablename(id,parent,text) VALUES('".$val['id']."', '".$val['parent']."', '".$val['text']."')";
$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));
}
mysqli_close($connection);
?>
しかし、私が望むのは、テーブルのすべてを削除してから新しいものを挿入しないことです。しかし、古い値を更新する(おそらく?を使用して)新しい値を挿入するSQL文。
だから、のような:
If id exists:
update row
else:
insert new row
私はPHPとSQLに新しいです。ですから、私の問題は、JSON配列情報にアクセスするためのPHP構文を知ることです。だから、どんな例でも大歓迎です!
参照:http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.htmlパラメータ化されたクエリも使用してください。あなたはSQLインジェクションに慣れています。 – chris85
ここには間違いがあります。あなたのコードが公開されている無数のSQLインジェクションの脆弱性からあなたを守るため、フレームワークを使用してください。検証なしでユーザーの入力を信頼し、文字列連結を使用してクエリを構築します(@ chris85が示唆するようにパラメータ化クエリを使用します)。また、上記のコードにはかなりの構文エラーがあります。実際に正直に実行されるかどうかは不明です。 –