PDO准备的语句绑定

时间:2018-09-07 13:06:19

标签: mysql arrays pdo prepared-statement

我有一个数据数组,例如这个:

$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 :(得分:1)

edit:Execute确实适用于命名绑定,因此您可以像这样编辑$ data数组:

SELECT T.Name, X.*
FROM TABLE AS T
CROSS APPLY dbo.splitstring(Codes) AS X;

请注意:每个键的开头

下面的原始答案...

我认为问题在于您正在尝试按名称进行绑定,我不认为PDOStatement支持命名绑定。我建议尝试以下方法:

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