Не удается получить SQL-запрос для столбца «формат»

#php #mysql

#php #mysql

Вопрос:

Кажется, я не могу выполнить правильный выбор из данных MySQL.

 $sort = $_GET['sort'];
// ...
$sql = "SELECT id, title, genre, format, year FROM dvd WHERE format LIKE '$sort%'";

$result = mysql_query($sql, $link);

<ul class="grid">
<?php
while ($row = mysql_fetch_assoc($result)) 
    { ?>
        ...
where $sort = 'dvd'
  

Однако, когда я попытался сделать это вручную,

SELECT id, title, genre, format, year FROM dvd WHERE format LIKE 'dvd'

я смог получить результаты, используя phpmyadmin -> MySQL -> SQL.

Почему я не смогу получать данные всякий раз, когда выбираю формат?

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

Комментарии:

1. Вы забыли подстановочный знак% в своем ручном запросе.

2. Так $sql = "SELECT id, title, genre, year FROM dvd WHERE format LIKE '$sort%'"; работает?

Ответ №1:

слово «формат» может быть конфликтующим ключевым словом… измените имя столбца «формат» на что-то другое… Это будет работать…

Комментарии:

1. Формат не является зарезервированным словом.

2. правильно, формат — это функция.. вы можете попробовать поместить имя столбца между этими символами: ` если вы не хотите менять имена сейчас..

3. @Wesley van Opdorp это не ключевое слово, а функция.. вот ссылка на руководство по mysql dev.mysql.com/doc/refman/5.0/en /…

4. что я имею в виду, используя эти символы: ` было написать ваш запрос следующим образом: codepad.org/a697Gl7f

Ответ №2:

попробуйте это:

 "SELECT id, title, genre, format, year FROM dvd WHERE format LIKE '". $sort ."%'";
  

не забывайте, что переменная $sort берется из $ _GET и должна быть защищена

Ответ №3:

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

запустите запрос таким образом

 $sort = mysql_real_escape_string($_GET['sort']);
$sql = "SELECT id, title, genre, format, year FROM dvd WHERE format LIKE '$sort%'";
$result = mysql_query($sql, $link) or trigger_error(mysql_error()." in ".$sql);
  

и посмотрите, что он говорит.