我想通过PHP将一些数据从jQueryMobil.listwidget发送到mysql数据库。
我收到并发布我的列表项目:
function getItems()
{
var listview_array = new Array();
$( "#itemList li" ).each(function(index) {
listview_el = new Object();
listview_el.id = index;
listview_el.name=$(this).text();
listview_el.owner="owner";
listview_array.push(listview_el);
});
var stringifyObject = JSON.stringify(listview_array);
//alert(stringifyObject);
$.ajax({
type: "POST",
dataType: 'json',
url: "insert.php",
data: { mydata: stringifyObject },
});
//showItems();
}
我想将我的json-object添加到存在的mysql数据库/表中。根据我的要求,我的数据已发送,但if(prepStmnt)从未成功。
<?php
$con = new mysqli($servername, $username, $password, $dbname);
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
echo "preps";
if($preparedStatement = $con->prepare('INSERT INTO Einkaufsliste (item, owner) VALUES (:name, :owner)')){
$preparedStatement->execute(json_decode($_POST["mydata"], true));
$preparedStatement->close();
echo "done";
};
$con->close();
?>
请告诉我为什么我的数据库中没有数据存储?
答案 0 :(得分:1)
MySQLi NOT 支持命名参数。
if($preparedStatement = $con->[...snip...] (:name, :owner)')){
^^^^^^^^^^^^^
这在MySQLi中是完全非法的,所以你的准备工作失败了,其他一切都落在了脚本的末尾,因为你没有错误检查。
$prepare = $con->prepare(...);
if (!$prepare) {
die(mysqli_error($con));
}
正确的mysqli准备声明将是
$stmt = $con->prepare('INSERT ... VALUES (?, ?)');
请注意?
占位符。
从不永远假设您的查询将被取消。即使你的sql实际上是正确的,但是查询失败的方式几乎无穷无尽。总是假设失败,检查失败,并将成功视为一个惊喜。