-1

Прочитал много статей, но так и не смог понять как вместо значений полей подставить переменную. Всё перепробовал, но к сожалению вывод массива не происходит

$genreBook = $arrJsonData[1];
$publishing_first_interval = intval($arrJsonData[3]);
$publishing_second_interval = intval($arrJsonData[4]);
$page_first_int = intval($arrJsonData[6]);
$page_second_int = intval($arrJsonData[7]);
$price_first_int = intval($arrJsonData[9]);
$price_second_int = intval($arrJsonData[10]);
$author = $arrJsonData[12];

$sql = "SELECT * FROM book_items WHERE 'genre_book'= '.$genreBook.' AND 'year_publishing_book' BETWEEN '.$publishing_first_interval.' AND '.$publishing_second_interval.' AND 'number_of_page' BETWEEN '.$page_first_int.' AND '.$page_second_int.' AND 'price' BETWEEN '.$price_first_int.' AND '.$price_second_int.' AND 'author'= '.$author.'"; $result = mysqli_query($link, $sql); if(!$result){ die(mysqli_error($link)); }

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC); print_r($rows);

  • https://php.ru/manual/mysqli-stmt.bind-param.html – Mike Oct 31 '22 at 23:40
  • Как минимум, echo напишите перед $sql - это чтобы топорно проверить, что за строка запроса у вас формируется. Если формируется, то этот запрос напрямую в базу проверить, если работает вообще и возвращается результат. – void Nov 01 '22 at 03:50

2 Answers2

0

Все подробные конструкции

.$genreBook.

были бы оправданы, если сама строка изначально была бы в одинарных кавычках, а она в двойных, а так же перед и после конкатенации надо тоже двойные кавычки. Соответственно тут нет конкатенации.

Это можно было бы увидеть даже просто если вывести сам запрос через echo или включив отображение ошибок.

Как и какими средствами находить ошибки в PHP коде?


А в целом почитайте про подготовленные переменные, во-первых так запрос будет безопаснее, а во-вторых не придётся мучиться с конкатенациями и пр.

https://www.php.net/manual/ru/mysqli.quickstart.prepared-statements.php

Драйверы для работы с подготовленными запросами: mysqli и pdo

0

Кавычки в названиях полей должны быть косые, на клавише с буквой "ё". Точки не нужны.

.... WHERE `genre_book` = '$genreBook' AND ....
DrMcSheen
  • 975