我正在将我的数据库连接从mysqli转移到PDO。 在更新时,我坚持一个查询: 在mysql中:
$quec='designation=10 OR designation=11 OR designation=12';
$query="select firstname,mobile,email from mt where location=".$value." and cp!=".$cpa" and (".$quec.") and dept=".$usersubdept." and mstatus=1";
它在mysqli中运行良好。 在PDO中我写道:
$query="select firstname,mobile,email from mt where location=:value AND cp!=:cpa AND (:quec) AND dept=:usersubdept AND mstatus=:mstatus";
使用绑定语法将值与变量绑定,我没有得到任何结果行。 如何纠正这个问题?
答案 0 :(得分:0)
我认为你不能使用:quec
作为参数,因为它实际上是3个东西而不是可以绑定的值。否则,您可能会遇到绑定问题,但我们还没有看到您的代码。试试这个:
$query="SELECT firstname, mobile, email FROM mt WHERE location = :value AND
cp != :cpa AND (" . $quec . ") AND dept = :dept AND mstatus = 1";
$stmt = $db->prepare($query);
$stmt->bindValue(':value',$value);
$stmt->bindValue(':cpa',$cpa);
$stmt->bindValue(':dept',$usersubdept);
$stmt->execute();
答案 1 :(得分:0)
你需要准备一个这样的字符串:':id0,:id1,:id2,你可以这样做:
$designationlist = ':id'.implode(',:id', array_keys($designationIds));
那么你的SQL将是:
$query="select firstname,mobile,email from mt where location=:value AND cp!=:cpa AND designation IN(".$designationlist.") AND dept=:usersubdept AND mstatus=:mstatus";
和
$parms = array_combine(explode(",", $designationlist), $designationIds);
$stmt = $PDO->prepare($query);
$res = $stmt->execute($parms);