单列PDO上的OR运算符

时间:2016-06-11 17:44:05

标签: php mysql mysqli pdo prepared-statement

我正在将我的数据库连接从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";

使用绑定语法将值与变量绑定,我没有得到任何结果行。 如何纠正这个问题?

2 个答案:

答案 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);