PHP将数组传递给PDO bindParam

问题描述 投票:3回答:3

PDO参数:

$cto=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);

与数据库交互

$csql=$cto->prepare("INSERT INTO `users`(`username`, `password`, `class`, `is_on`, `time_log`, `IP`)
        VALUES (:name,:pass,:class,0,0,'0')");
        $pr=[
          ':name' => $_POST['username'],
          ":pass" => $_POST['password'],
          ":class" => $_POST["class"],
        ];
        $csql->execute($pr);
        $cto=null;

我的问题是,我当前在执行中使用数组$ pr,请问我是否可以使用bindParam传递此数组

$csql->bindParam($pr);
$csql->exec();

谢谢您的时间。

php mysql pdo
3个回答
3
投票

是,每个bindParam()必须执行一行,如果要像在数组中一样绑定多个值,请在excute()中尝试它

http://php.net/manual/en/pdostatement.bindparam.php


4
投票

您可以通过这种方式在单行中使用bindParam()

$csql=$cto->prepare("INSERT INTO `users`(`username`, `password`, `class`, `is_on`, `time_log`, `IP`)
VALUES (:name,:pass,:class,0,0,'0')");

//Looping for all values into array...
foreach ($pr as $key => &$val) {
    $csql->bindParam($key, $val);
}
$csql->execute();

希望这对您有帮助!


0
投票

如果您不想通过bindValue引用传递,也可以使用bindParam

foreach ($pr as $key => &$val) {
    $csql->bindValue($key, $val);
}
© www.soinside.com 2019 - 2024. All rights reserved.