【发布时间】:2016-10-25 20:39:09
【问题描述】:
我正在使用 jstree。树工作正常。我使用 JQuery 将 JSON 发送到 PHP 文件。这很好用。
$("#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 表:删除 $tablename ($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 语句来更新旧值(可能使用 id?)并插入新值。
比如:
If id exists:
update row
else:
insert new row
我是 PHP 和 SQL 的新手。所以我的问题是知道访问 JSON 数组信息的 PHP 语法。所以请任何示例将不胜感激!
【问题讨论】:
-
参见:dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html 也使用参数化查询。您对 SQL 注入持开放态度。
-
这里有很多错误。请使用框架,因为它可以保护您免受代码开放的无数 SQL 注入漏洞的侵害。您信任没有验证的用户输入,使用字符串连接构建查询(使用@chris85 建议的参数化查询)。上面的代码中也有很多语法错误——说实话,不确定它是否真的会运行。
标签: php jquery mysql json jstree