PHP将数组传递给PDO bindParam
PDO参数: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')"); $
$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);