这是我的代码。我相信它不会将值绑定到参数上。但我不知道为什么:
public function create($fields)
{
$keys = array_keys($fields);
$values = null;
$x = 1;
foreach($fields as $field) {
$values .= '?';
if ($x < count($fields)) {
$values .= ', ';
}
$x++;
}
$sql = "INSERT INTO users (`" . implode('`, `', $keys) . "`) VALUES ({$values})";
if(!$this->db->prepare($sql)->execute($fields)) {
return true;
}
return false;
}
关于index.php:
$user = new User();
$user->create(array(
'name' => 'test',
'username' => 'test2',
'email' => 'test@gmail.com'
));
为什么我的值没有绑定参数?这是完整的错误:
执行'INSERT INTO用户(
name
)时发生异常,username
,SQLSTATE [HY093]:参数号无效:参数未定义
答案 0 :(得分:0)
如果您使用 ?
方式查询,那么您在params中发送的数组可能没有密钥我认为!
编辑:执行 execute(array_values($fields))
,当有 username = :username, pass = :pass
等参数时,您必须使用密钥
答案 1 :(得分:0)
public function create($fields) { $keys =''; $values = ''; foreach($fields as $k=>$field) { $keys[] = $k; $values[] = $field; } $sql = "INSERT INTO users (".implode(',',$keys).") VALUES ("'".implode ("','",$values)."'")"; if(!$this->db->prepare($sql)->execute($fields)) { return true; } return false; }