PDO没有插入正确的数据

时间:2013-12-03 13:28:55

标签: php pdo

我有这个函数,我将表名和数据传递给。

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")。

我有什么问题?

1 个答案:

答案 0 :(得分:4)

$v在循环的每次迭代中被覆盖,当它完成并且$st->execute()运行时它只包含最后一个值。请尝试使用$st->bindValue()代替$st->bindParam()