Здравствуйте, на сервер приходит json массив : Код (Text): $data = json_decode($msg,true); Код (Text): print_r($data); Код (Text): Array ( [0] => Array ( [number_orderes] => A472702 [dates] => 30-01-2020 23:23:19 [order_quantity] => 5 [E_mail] => admin@mail.ru) ) как распарсить для запись в базу.
@MouseZver тогда как мне сохранить все это в базу : Код (Text): $mysqli->query("UPDATE `orders` SET `numorder` = '...', `dates`='...', `orderquant`='...', `email`='...'");
Подставить место точек, переменные с данными, а лучше с помощью подготовленного запроса, где биндить сможешь в цикле
Проверь на null, на существование используемых ключей (можно использовать и filter_var_array) и вставляй через подготовленный запрос (см. примеры для mysqli prepare). --- Добавлено --- P.S. «Биндить» можно не только в цикле, но и просто перечислить элементы массива в списке параметров соотв. ф-ции. --- Добавлено --- P.P.S. Тут, наверно, INSERT нужен.
@kris1412, а что вообще про массивы знаем? Может почитать про массивы, для начала? https://www.php.net/manual/ru/language.types.array.php
помогите пожалуйста как правильно это сделать, я не знаю как в первый раз делаю подготовленный запрос Код (Text): $mysqli->query("UPDATE `orders` SET `numorder` = '?', `dates`='?', `orderquant`='?', `email`='?'"); if($stmt = $mysqli -> prepare($mysqli)){ $stmt -> bind_param(); $stmt -> execute(); $stmt -> close(); } else{ echo $mysqli -> error; }
@kris1412 А-а-а-а, мои глаза.... https://www.php.net/manual/ru/mysqli.prepare.php - если того, что здесь написано (заметь, по-русски) тебе не достаточно, не твоё это дело, найми кого-нибудь...
ошибка:Uncaught Error: Call to a member function prepare() on null подскажите в чем тут ошибка и как исправить ее. Код (Text): $sql->query("UPDATE `orders` SET `zakaznum` = '?', `dates`='?', `orderquant`='?', `email`='?', `phone`='?'"); $stmt = $mysqli -> prepare($sql); $stmt->bind_param("siisi", $number_orderes,$dates,$order_quantity,$E_mail,$phone); $stmt -> execute(); $stmt -> close();
@kris1412, почему у тебя zakaznum - это строка, а dates - это число? Используй методы обработки ошибок https://www.php.net/manual/ru/mysqli.error.php и еже с ними. Попробуй передать сначала единственное значение zakaznum и как только запрос отработает прибавляй остальные поля по одному.
@Valick выдает ошибку, даже с одним значением zakaznum :Fatal error</b>: Uncaught Error: Call to a member function prepare() on null in C:
@Valick в бд varchar упростил до одного значения и все равно выдает ошибку Код (Text): $data=["E_mail"=>"admin@admin"]; $sql->query("UPDATE `orders` SET `email`= ?"); $stmt = $mysqli -> prepare($sql); $stmt->bind_param("s",$data['E_mail']); $stmt -> execute(); $stmt -> close(); print_r($data); }
@kris1412, место того что бы читать мануал, ты лепишь горбатого к стенке Читай внимательно и найди ошибку в своём коде https://www.php.net/manual/ru/mysqli.prepare.php
урааа я все токи добился результата, все заработало, всем спасибо за помощь $msg = file_get_contents("php://input"); Код (Text): $msg = file_get_contents("php://input"); $data = json_decode($msg,true); $stmt = mysqli_prepare($sql,"UPDATE `orders` SET `email`= ?, `phone` =?"); mysqli_stmt_bind_param($stmt, "ss", $data[0]['E_mail'], $data[0]['phone']); mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt);