Найдите номер, ближайший к неработающему значению (SQL) - PullRequest
0 голосов
/ 05 мая 2020

У меня есть следующая SQL Команда:

$sql = "SELECT TOP 1
        FROM products
        ORDER BY ABS( price - '$price' ) ASC LIMIT 1";

$result = $conn->query($sql);


while($row = $result->fetch_array()){
    echo "\r\n";
    echo $row['price'];
    echo "\r\n";
} 

Я хочу найти ближайшее к локальной переменной $ price число в столбце «цена». Например, когда пользователь вводит цену 15000, я хочу найти ближайшее к ней число в столбце «цена» таблицы продуктов. К сожалению, это дает мне эту проблему:

PHP Fatal error:  Uncaught Error: Call to a member function fetch_array() on bool in C:\Users\rojto\Documents\clones\Techalo\techalo-improvements\database.php:25
Stack trace:
#0 {main}

Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 05 мая 2020

У вас должно быть имя столбца в предложении SELECT вместо TOP 1.

Предположительно, вы хотите:

SELECT price
FROM products
ORDER BY ABS(price - :price) 
LIMIT 1;

Обратите внимание, что здесь используется параметр запроса для передачи значение целевой цены, а не объединение его в строку запроса. Вы можете посмотреть этот знаменитый пост SO , чтобы узнать, почему и как избежать SQL инъекции.

...