PHP Вставка данных в MySQL, размещенных объектом JSON

Я хочу отправить некоторые данные из jQueryMobil.listwidget через PHP в базу данных 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-объект в базу данных / таблицу 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

Решение

MySQLi делает НЕ поддержка именованных параметров.

if($preparedStatement = $con->[...snip...] (:name, :owner)')){
^^^^^^^^^^^^^

В MySQLi это совершенно недопустимо, поэтому ваша подготовка завершается неудачно, а все остальное просто выпадает из конца сценария, потому что у вас нет проверки ошибок.

$prepare = $con->prepare(...);
if (!$prepare) {
die(mysqli_error($con));
}

Надлежащим MySQL подготовлено заявление будет

$stmt = $con->prepare('INSERT ... VALUES (?, ?)');

Обратите внимание ? заполнители.

Никогда КОГДА-ЛИБО Предположим, ваш запрос будет успешным. Даже если ваш sql на самом деле верен, существует почти бесконечное количество способов сбоя запроса. Всегда принимайте неудачу, проверяйте ее и рассматривайте успех как приятный сюрприз.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]