#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);
и посмотрите, что он говорит.