在 pdo 中绑定多个值

2022-08-30 16:04:01

有没有一种简单的方法可以在PDO中绑定多个值而无需重复?请看下面的代码:

$result_set = $pdo->prepare("INSERT INTO `users` (`username`, `password`, `first_name`, `last_name`) VALUES (:username, :password, :first_name, :last_name)");

$result_set->bindValue(':username', '~user');
$result_set->bindValue(':password', '~pass');
$result_set->bindValue(':first_name', '~John');
$result_set->bindValue(':last_name', '~Doe');

$result_set->execute();

在这里,我以4倍的重复方式绑定值。那么有没有一种简单的方法可以在PDO中绑定多个值?


答案 1

您始终可以在参数中绑定值,只要您接受被视为(字符串)的值即可。execute()PDO::PARAM_STR

$result_set = $pdo->prepare("INSERT INTO `users` (`username`, `password`, `first_name`, `last_name`) VALUES (:username, :password, :first_name, :last_name)");
$result_set->execute(array(
    ':username' => '~user',
    ':password' => '~pass',
    ':first_name' => '~John',
    ':last_name' => '~Doe'
));

您可以像使用任何数组一样使用传递的数组:

$user = "Nile";
$pdo->execute(array(":user" => $user));

答案 2

如果要基于类型(字符串,int等)进行绑定,则不可以。如果您可以将所有内容绑定为字符串:

$stmt = $db->prepare("...");
$stmt->execute(array(
    'foo' => 'bar',
    'something' => 'else',
    'third' => 'thing',
));

推荐