2013-06-12 12 views
5

Próbuję uzyskać najlepsze informacje za pomocą klauzuli "where in", ale jeśli użyję bindvalue lub bindparam, nie otrzymam żadnych wyników.Wartość bind w PDO w klauzuli "where in" nie działa

Oto moje zapytanie nie daje żadnych wyników

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

Jeśli użyję bezpośredniego wyszukiwania bez bindvalues ​​lub param uzyskać wyniki

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

Czy ktoś może mi pomóc, aby użyć wartości bind lub parametru w tym wyszukiwaniu klauzula "where in"?

@PhilCross To co mam, kiedy użycie 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: Używam MSSQL Server

+0

to 'PDO :: PARAM_STR' wymagane? – karthikr

+0

Włącz dziennik zapytań MySQL i zobacz, co jest uruchamiane. – Jessica

+0

Umieszczaj pojedyncze cudzysłowy w zapytaniu SQL? 'where IP = ': ip')' –

Odpowiedz

-1

klawisz wartości wiązania powinny być bez ':'

i wartość powiązania powinna być zmienna.

$ ip = '127.0.0.1';

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

+0

Nie prawda; w rzeczywistości prefiks ':' na kluczach parametrów był obowiązkowy w starszych wersjach PDO, obecnie w najnowszych wersjach PDO, jest opcjonalny. –

Powiązane problemy