[英]PDO not inserting correct data
我有此函数,我将表名和数据传递给该函数。
public function quickInsert($table, $data) {
$keys = array_keys($data);
$keysStr = '`'.implode('`,`', $keys).'`';
$valStr = ':'.implode(',:', $keys);
$Sql = "INSERT INTO `$table` ($keysStr) VALUES ($valStr)";
dump($Sql);
$st = $this->connection->prepare($Sql);
foreach ($data as $k => $v) {
dump(':'.$k.' - '.$v);
$st->bindParam(':'.$k, $v);
}
//dump($st->execute());
}
转储的输出是
string(114) "INSERT INTO `users` (`email`,`password`,`first_name`,`last_name`) VALUES (:email,:password,:first_name,:last_name)"
string(21) ":email - my@email.com"
string(140) ":password - myHashedPasswordString"
string(17) ":first_name - Tom"
string(17) ":last_name - Hart"
但是,当我执行查询时,所有字段中的数据都是姓氏(在这种情况下为“ Hart”)。
我怎么了?
$v
在循环的每次迭代中都被覆盖,当它完成并且$st->execute()
运行时,它仅包含最后一个值。 尝试$st->bindValue()
代替$st->bindParam()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.