Использование oci_parse и oci_execute - PullRequest
5 голосов
/ 21 ноября 2011

Я уверен, что это что-то очень простое, но я не могу найти свою ошибку.

Я пытаюсь выполнить следующее ...

$c = db_connect();

$email = addslashes($email);

$sql = "SELECT * FROM RUSER WHERE email LIKE '" . $email . "';";
$query = oci_parse($c, $sql) or die(oci_error($c));
$response = oci_execute($query) or die(oci_error($c));

но я получаю oci8 statement Warning: oci_execute(): ORA-00911: invalid character in /path/to/file.php on line 67, где в строке 67 указано $response.

Значит, что-то не так с $query, верно? Но я не могу найти то, что это будет. Необработанный sql прекрасно выполняется из командной строки. эхо get_resource_type($query) дает идентификатор ресурса ...

Что я делаю не так?

Ответы [ 2 ]

12 голосов
/ 21 ноября 2011

НЕ включайте ; в ваш SQL. ; не является частью самого SQL, его используют различные клиенты SQL (например, sql * plus) в качестве разделителя для обозначения конца команд, отправляемых на сервер.

1 голос
/ 30 августа 2012

Первая ошибка

$c = oci_connect("user","password","host/dbname") // db_connect() is not true

вторая ошибка, здесь не должно быть ";"в выражении

$sql = "SELECT * FROM RUSER WHERE email LIKE '" . $email . "';";

должно быть

$sql = "SELECT * FROM RUSER WHERE email LIKE '" . $email . "'"; 

, если вы хотите сравнить пользователя "=", чем LIKE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...