单列 PDO 上的 OR 运算符
OR operator on single column PDO
我正在将我的数据库连接从 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";
使用绑定语法将值与变量绑定,我没有得到任何结果行。
如何解决问题?
我不认为你可以使用 :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();
你需要准备这样一个字符串:':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);
我正在将我的数据库连接从 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";
使用绑定语法将值与变量绑定,我没有得到任何结果行。 如何解决问题?
我不认为你可以使用 :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();
你需要准备这样一个字符串:':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);