select из бд оракл

warlogon

Новичок
Здрасьте, не могу найти свою ошибку:
$user_password = "gg222573";
$stid = oci_parse($db, "SELECT L_NAME, ID FROM mcfcustomers WHERE PASSPORT = :de");
oci_bind_by_name($stid, ":de", $user_password);
oci_execute($stid, OCI_DEFAULT);
$row = oci_fetch_assoc($stid);
echo $row['ID'];
эхо выводи пустую сроку, когда если сразу вместо :de писать "gg222573" все ок. непорядок наверно в самом запросе с кавычками, но не могу разобраться. подскажите, пожалуйста.
 

Gremboloid

инженера Гр...
Сдается мне что вы привели не тот код что у Вас не работает, а упрощенную версию
 

warlogon

Новичок
Gremboloid, ну я намек понял: действительно тот код что я написал выше рабочий, у меня не идет когда в запросе идет подстановка двух переменных, типа:
$stid = oci_parse($db, "SELECT L_NAME, ID FROM mcfcustomers WHERE (PASSPORT = :de2) AND (L_NAME = :de)");
oci_bind_by_name($stid, ":de2", $user_password);
oci_bind_by_name($stid, ":de", $user_username);

p.s. var_dump(oci_error($stid)); пишет bool(false)...
 

warlogon

Новичок
Бл..! Вот моя ошибка, я не учел что у меня поле L_NAME CHAR(20), а вставляю строку произвольной длины.

цитирую http://php.net/manual/ru/function.oci-bind-by-name.php:
"Если прикрепляется строка к CHAR-полю в выражении WHERE, помните, что Oracle использует при сравнении значения CHAR, дополненные пробелами. Переменная PHP должна быть дополнена пробелами до того же размера, что и поле, чтобы выражение WHERE выполнялось верно."
 
Сверху