2013-06-12 9 views
5

Ich versuche, eine Top-Info mit einer "where in" -Klausel zu bekommen, aber wenn ich bindvalue oder bindparam verwende, bekomme ich keine Ergebnisse.PDO bindvalue in 'where in' -Klausel funktioniert nicht

Hier ist meine die Abfrage, die keine Ergebnisse

$user2 = $db->prepare("Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id in (Select memb___id from MEMB_STAT where IP = :ip)"); 
$user2->bindValue(':ip','127.0.0.1',PDO::PARAM_STR); 
$user2->execute(); 

nicht geben Wenn ich ohne bindvalues ​​direkte Suche verwenden oder param ich die Ergebnisse

bekommen
$user2 = $db->prepare("Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id in (Select memb___id from MEMB_STAT where IP = '127.0.0.1')"); 
$user2->execute(); 

Kann mir jemand helfen zu Verwenden Sie den Bindvalue oder Param auf dieser Suche 'where in' -Klausel?

@PhilCross Dies ist, was ich bekomme, wenn Gebrauch Var_dump:

object(PDOStatement)#4 (1) { ["queryString"]=> string(142) "Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id in (Select memb___id from MEMB_STAT where IP = :ip)" 

Ps: Ich MSSQL Server

+0

ist 'PDO :: PARAM_STR' erforderlich? – karthikr

+0

Aktivieren Sie das MySQL-Abfrageprotokoll und sehen Sie, was ausgeführt wird – Jessica

+0

Setzen Sie einfache Anführungszeichen in Ihre SQL-Abfrage? 'where IP = ': ip')' –

Antwort

-1

der Schlüssel des bind Wert verwende sollte ohne sein ':'

und Der Bind-Wert sollte in Variable sein.

$ ip = '127.0.0.1';

$ benutzer2-> bindValue ('ip', $ ip, PDO :: PARAM_STR);

+0

Nicht wahr; Tatsächlich ist das Präfix ':' auf Parameterschlüsseln in älteren Versionen von PDO obligatorisch, jetzt in neueren Versionen von PDO, ist es optional. –