Я полностью потерял то, что не так с моим сценарием. Данные JSON поступают правильно, а переменные $ i и $ current – все, что должно быть на каждом этапе forloop.
Кажется, что он обновляет мою базу данных с идентификатором, поэтому в случае, когда id равно 11, он будет обновлять все столбцы с номером 11.
Вот мой сценарий:
if($mode == 'SAVE_BUYING_ROW') { $JSON = (array)$JSON ; include('pdoconnect.php') ; $result = $dbh->prepare("UPDATE parts_trading_instructions SET quantity = ?, supplierRef = ?, currencyRef = ?, net = ?, vat = ?, shippingNet = ?, shippingVat = ?, direct = ?, ebayItemNumber = ? WHERE id = ?") ; $i = 0 ; foreach($JSON as $current) { $current = (string)$current ; if($i == 0) { $i++ ; continue ; } $result->bindParam($i, $current, PDO::PARAM_STR) ; $i++ ; } $result->execute() ; }
Может ли кто-нибудь увидеть, где я ошибаюсь?
Используйте bindValue
вместо bindParam
. bindParam
берет ссылку на переменную и только считывает ее значение при выполнении запроса. bindValue
принимает значение немедленно.