PHP将数组传递给PDO bindParam

时间:2016-01-19 05:59:01

标签: php mysql pdo

PDO param:

$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();

感谢您的时间。

4 个答案:

答案 0 :(得分:3)

是的,你必须为每个bindParam()做一行,如果你想在数组中绑定多个值,在excute()中尝试它

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

答案 1 :(得分:3)

您可以通过以下方式单行使用bindParam()

{{1}}

希望这会对你有帮助!

答案 2 :(得分:0)

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

foreach ($pr as $key => &$val) {
    $csql->bindValue($key, $val);
}

答案 3 :(得分:0)

您可以将所有参数作为数组传递给execute()内部。

这适用于可变的参数大小,事先不知道,并且避免了可能导致错误的循环。

$inputArray : input parameters in array format

//第1步:以?,?,?

格式创建占位符
$placeholders = str_repeat('?,', count($inputArray) - 1) . '?';

//第2步:创建查询

$query = "  select *
            from table
            where column in ($placeholders)";

//第3步:照常准备

$st = $this->db()->prepare($query);

//第4步:在执行程序中发送值

$st->execute($inputArray);