2016-06-11 10 views
0

Ich verlagern meine Datenbankverbindungen von mysqli zu PDO. Während der Aktualisierung, ich auf einer Abfrage bin stecken: In mysql seine:OR-Operator auf einer einzigen Spalte PDO

$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"; 

Seine Arbeit in mysqli in Ordnung. i In PDO schrieb:

$query="select firstname,mobile,email from mt where location=:value AND cp!=:cpa AND (:quec) AND dept=:usersubdept AND mstatus=:mstatus"; 

die Werte Bindung mit Variablen binden Syntax, ich bin kein Ergebnis Reihe zu bekommen. Wie behebt man das Problem?

+0

Jeder Fehler erhalten Sie? wenn nicht, muss es ein bindendes Problem sein! –

Antwort

0

Ich glaube nicht, dass Sie :quec als Parameter verwenden können, da es eigentlich 3 Dinge und nicht ein Wert ist, der gebunden werden kann. Andernfalls haben Sie vielleicht etwas falsches mit Ihrer Bindung, aber wir haben Ihren Code dafür nicht gesehen. Versuchen Sie folgendes:

$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(); 
0

Sie benötigen einen Zeichenfolge wie folgt vorzubereiten: ‚: ID0,: id1,: id2, können Sie dies wie folgt tun:

$designationlist = ':id'.implode(',:id', array_keys($designationIds)); 

dann SQL sein wird:

$query="select firstname,mobile,email from mt where location=:value AND cp!=:cpa AND designation IN(".$designationlist.") AND dept=:usersubdept AND mstatus=:mstatus"; 

und:

$parms = array_combine(explode(",", $designationlist), $designationIds); 
$stmt = $PDO->prepare($query); 
$res = $stmt->execute($parms); 
Verwandte Themen