我正在尝试为PDO插入的执行部分动态创建一个数组。我的工作代码包括以下文本:
$stmt->execute(array(
':fname' => $_POST['fname'],
':lname' => $_POST['lname'],
':email' => $_POST['email']
));
我第一次尝试创建数组:
$insert_execute = array();
foreach ($values as $column => $value) {
array_push($insert_execute, ":" . $column . " => " . "'".$value."'");
}
但是当我尝试执行时,我收到了PDO错误:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
当我打印结果时,还有一个附加参数:
Array
(
[0] => fname => 'Test Name'
[1] => lname => 'Test Last'
[2] => email => 'test@email.com'
)
如何修改array_push以删除数组中的[0],[1],[2]等?
答案 0 :(得分:1)
您正在构建并推送字符串到该数组上。 =>
不应该是您要插入的内容的一部分 - 它只是用于初始化。
你的意思是说:
foreach ($values as $column => $value) {
$insert_execute[":$column"] = $value;
}
答案 1 :(得分:1)
你似乎过于复杂了。您已经有一个参数名称的关联数组值,因此您只需使用该
$stmt->execute($values);
数组中参数名称的冒号前缀(:
)是可选的。如果它不存在,PDO扩展将自动添加它。