无法获取列“格式”的SQL查询

时间:2011-10-25 07:59:56

标签: 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获得结果 - &gt; mySQL - &gt; SQL。

为什么我选择格式时无法获取数据?

我尝试了其他列,如流派和标题,我能够得到我想要的结果。这些列都被构造为相同的VARCHAR和相同的设置

3 个答案:

答案 0 :(得分:0)

试试这个:

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

不要忘记$ sort变量来自$ _GET并且它必须是安全的

答案 1 :(得分:0)

“格式”这个词可能是一个有冲突的关键字......将列名“格式”更改为其他内容......它会起作用......

答案 2 :(得分:0)

询问你的数据库,而不是那些不知道你的数据库是什么的陌生人。

以这种方式运行您的查询

$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);

看看它说的是什么。