Создание SQL-запроса в виде строки с использованием PHP

0
$isbn = strval($_POST['select_catalog']);
$conn = oci_connect($username, $password, $db);
$stmt = oci_parse($conn, 
   "select title_name, author, pub_name, price, qty_on_hand ".
   "from publisher, title ".
   "where publisher.pub_no = title.pub_no and ".
   "isbn = :bind1");
oci_bind_by_name($stmt, ":bind1", $isbn, 10);
oci_execute($stmt, OCI_DEFAULT);

Вышеприведенный код захватывает ISBN из выпадающего меню выбора при отправке формы, stmt - это мой SQL-запрос, и я использую переменные связывания (но я также попытался просто прямо вставить ISBN)

Проблема, с которой я сталкиваюсь в любом случае, заключается в том, что моя переменная $ isbn задает ее как число, мой SQL-запрос ожидает varchar2, поэтому он должен иметь кавычки вокруг него. Тем не менее, я не могу использовать\для возврата из PHP для размещения кавычек вокруг ": bind1". Когда запрос запущен, вы получаете сообщение об ошибке, вызванное непредвиденным числом. Есть ли способ поставить цитаты вокруг: bind1?

  • 1
    возможно, добавьте тип в конец oci_bind_by_name
Теги:
database
oci

2 ответа

2
Лучший ответ

Вам не нужно указывать его

oci_bind_by_name($stmt, ":bind1", (string)$isbn, 10, SQLT_CHR);

попробуйте указать тип и придать параметр строке.

1

Пытаться:

oci_bind_by_name($stmt, ":bind1", strval($isbn), 10);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню