我正在将所有mysql编码转换为PDO并收到此错误 -
警告:PDO :: exec()期望参数1为字符串,数组在
中给出以下是代码:
$ent_date = $array[1];
$ent_time = $array[2];
$card_no = $array[3];
try {
$att = new PDO('mysql:host=localhost;dbname=att', 'root', '');
$att->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$att1 = 'insert into att_detail (att_date,att_time,att_card_no) values (:date_ent,:time_ent,:cardno)';
$att -> exec(array(
':date_ent'=>$ent_date,
':time_ent'=>$ent_time,
':cardno'=>$card_no));
echo "new record created";
}
catch (PDOException $e){
echo $att . "<BR>" . $e->getMessage();
}
$att = null;
了解最快解决方法的任何帮助。
答案 0 :(得分:1)
exec
执行查询,此函数的参数是字符串。
因此,以简单的方式exec
可以与无占位符的查询文本一起使用:
$att1 = 'insert into att_detail (att_date,att_time,att_card_no) ...';
$att -> exec($att1);
要使用预准备语句,您需要按照手册操作并使用PDOStatement对象:
您的代码看起来像(简化版):
$att1 = 'insert into att_detail (att_date,att_time,att_card_no) values (:date_ent,:time_ent,:cardno)';
$stmt = $att->prepare($att1);
$stmt->execute(array(
':date_ent'=>$ent_date,
':time_ent'=>$ent_time,
':cardno'=>$card_no
));
echo "new record created";
答案 1 :(得分:1)
您在exec
使用execute
不接受数组的手册PDO::exec php manual
我认为您要使用.ts
而不是接受要绑定的参数数组是手册PDO::execute()
答案 2 :(得分:0)
$stmt = $att->prepare($att1);
$result = $stmt->execute(array(
':date_ent'=>$ent_date,
':time_ent'=>$ent_time,
':cardno'=>$card_no));