Я столкнулся с ошибкой со вставкой в таблицу
JSON:
{"machine":"1","postage":"1","tracking":"1","lve":"1","notice":"4","content":"12","refresh":"1","location":"cityname"}
Как я могу это сделать?
спасибо
EDIT исправил ошибки, о которых вы, ребята, упомянули
function addOptions ($postData, $dbh) {
//print_r($postData);
$result = json_decode($postData);
//$location = $result->location;
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO options (location, display_time ,content_time, refresh_time, machine_data, postage_data, tracking_data, lve_data)
VALUES (:location, :display_time, :content_time, :refresh_time, :machine_data, :postage_data, :tracking_data, :lve_data)
ON DUPLICATE KEY UPDATE
display_time= :display_time, refresh_time= :refresh_time, machine_data= :machine_data, content_time= :content_time, postage_data= :postage_data, tracking_data= :tracking_data, lve_data= :lve_data";
$preparedStatement = $dbh->prepare($sql);
$preparedStatement->bindParam(':location', $result->location);
$preparedStatement->bindParam(':display_time', $result->display);
$preparedStatement->bindParam(':content_time', $result->content);
$preparedStatement->bindParam(':refresh_time', $result->refresh);
$preparedStatement->bindParam(':machine_data', $result->machine);
$preparedStatement->bindParam(':postage_data', $result->postage);
$preparedStatement->bindParam(':tracking_data', $result->tracking);
$preparedStatement->bindParam(':lve_data', $result->lve);
$preparedStatement->execute();
}
теперь я получаю эту ошибку msg
Предупреждение: PDOStatement :: execute() ожидает, что параметр 1 будет массивом, строка, указанная в D:\xampp\htdocs\admin\include\function.php в строке 186
Вы забыли создать свой подготовленный оператор, попробуйте это, прежде чем связывать параметры:
$preparedStatement = $dbh->prepare($sql);
РЕДАКТИРОВАТЬ:
Просто измените это:
(Поскольку вы уже привязываете параметры, вы можете просто выполнить запрос! В противном случае параметр для выполнения будет включать параметры для подготовленного оператора)
$preparedStatement->execute($sql);
к этому:
$preparedStatement->execute();
Для получения дополнительной информации о команде PDO execute() см. Руководство: http://php.net/manual/en/pdostatement.execute.php
И цитата оттуда:
public bool PDOStatement :: execute ([array $ input_parameters])
Немногие ошибки:
Добавьте команду pdo:
$preparedStatement = $dbh->prepare($sql);
измените все ваши bind_param на это:
$preparedStatement->bindParam(':display', $result->display);
добавьте выполнение в условие if, чтобы вы видели, если он сработал:
if( $preparedStatement->execute() === FALSE){
Throw new \Exception('Bad query insertion!');
}
$preparedStatement = $dbh->prepare($sql);