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();
感谢您的时间。
答案 0 :(得分:3)
是的,你必须为每个bindParam()做一行,如果你想在数组中绑定多个值,在excute()中尝试它
答案 1 :(得分:3)
答案 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);