ЗОП подготовил заявления обязательные - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть массив данных, например:

$data = ['ver_weather' => $post["weathercondition"],
         'ver_flash'   => $post["flashintense"],
         'ver_earth'   => $post["earthrumble"]]

эти данные, которые я использую в моем sql следующим образом:

$sql = "INSERT INTO `database`.`table` (`weather`, `flash`, `earth`)
        VALUES (:ver_weather, :ver_flash, :ver_eart)";

$pdo->prepare($sql)->execute($data);

Результат примерно такой:

INSERT INTO `database`.`table` (`weather`, 'flash', `earth')
VALUES ('1'weather, '1'flash, '1'earth)

Значит, pdo заменяет части моих ключей значением?

что там не так?

спасибо за помощь.

1 Ответ

0 голосов
/ 07 сентября 2018

edit: Execute работает с именованными привязками, поэтому вы можете просто отредактировать массив $ data следующим образом:

$data = [':ver_weather' => $post["weathercondition"],
         ':ver_flash'   => $post["flashintense"],
         ':ver_earth'   => $post["earthrumble"]]

Обратите внимание: в начале каждой клавиши

Оригинальный ответ ниже ...

Я думаю, что проблема в том, что вы пытаетесь связать по имени, и я не думаю, что PDOStatement поддерживает именованные привязки. Я бы порекомендовал попробовать следующее:

$data = [$post["weathercondition"], $post["flashintense"], $post["earthrumble"]];
$sql = "INSERT INTO `database`.`table` (`weather`, `flash`, `earth`)
        VALUES (?, ?, ?)";

$pdo->prepare($sql)->execute($data);
...