Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将数组传递给PDO bindParam_Php_Mysql_Pdo - Fatal编程技术网

PHP将数组传递给PDO bindParam

PHP将数组传递给PDO bindParam,php,mysql,pdo,Php,Mysql,Pdo,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')"); $

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;
我的问题是,我目前在execute中使用数组$pr,我可以使用bindParam传递这个数组吗

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

谢谢您的时间。

是的,您必须为每个bindParam()执行一行操作,如果您想将多个值绑定为一个数组,请在excute()中尝试

您可以通过以下方式在单行中使用:

$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();
希望这对你有帮助

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


可以将所有参数作为数组传递到execute()中

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

$inputArray : input parameters in array format
//步骤1:以?、?、?格式创建占位符

$placeholders = str_repeat('?,', count($inputArray) - 1) . '?';
//步骤2:创建查询

$query = "  select *
            from table
            where column in ($placeholders)";
//第三步:像往常一样准备

$st = $this->db()->prepare($query);
//步骤4:在execute中发送值

$st->execute($inputArray);
否,as-将参数绑定到指定的变量名。另一种方法是循环进行。例如,
foreach($pras$key=>$val){$csql->bindParam($key$val);}
$st->execute($inputArray);