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

$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?

2 ответа

Решение

Вам не нужно цитировать это

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

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

Пытаться:

oci_bind_by_name($stmt, ":bind1", strval($isbn), 10);
Другие вопросы по тегам