Cytat(Uriziel01 @ 25.01.2012, 17:04:34 )

No widzisz tylko że akurat SQL jest językiem interpretowanym przez [...]
Dobra. Metodą prób i błędów znalazłem przyczynę, ale dalej nic z tego nie rozumiem.
Doszedłem do tego, że problem jest wtedy kiedy wartości dla zapytania SQL są przepuszczane przez pg_escape_string. Muszą być, bo zawierają też apostrofy jako treść. Czyli nie ma co wklejać kodu, bo ten kod to pg_escape_string($string) z konkatenacją reszty SQL. Bez pg_escape_string działa (no wtedy nie działają dane z apostrofem, co by była równowaga w przyrodzie).
I teraz mi wytłumaczcie dobrzy ludzie, dlaczego:
- pg_escape_string($string) robi cokolwiek ze znakiem ampersand w $stringu? (dla sql to jest znak bez znaczenia)?
- dlaczego tej zmiany nie widać na ekranie ("echo $string" wyświetla dokładnie to samo, co echo "pg_escape_string($string)" jeśli chodzi o &, chociaż jedno działa a drugie nie działa)?
- WTF?
Reasumując:
dla $nazwa='You & me';
$query1= "select * from tabela where nazwa='".$nazwa."';"; (mniejsza o cudzysłowy)
$query2= "select * from tabela where nazwa='".pg_escape_string($nazwa)."';";
// echo query1 i echo query2 wyświetlą dokładnie to samo na ekranie i zapytanie to zadziała uruchomione bezpośrednio na bazie,
// ale uruchomione z poziomu PHP poprzez pg_query zadziała tylko to pierwsze.
//czemu?
uff