两个mysql查询之一不显示结果

时间:2014-01-07 19:55:24

标签: php mysql

我正在学习PHP,我需要通过id或slug从数据库中选择一些媒体。我可以问你为什么这段代码工作正常:

index.php?id=1

if( isset( $_GET['id'] ) ) {
    $id = $_GET['id'];
    $query = mysql_query("SELECT * FROM media WHERE id = $id");

    while($row=mysql_fetch_array($query)) {
        echo $row['slug'];
    }
}

这不是吗?

index.php?slug=first-post-slug

if( isset( $_GET['slug'] ) ) {
    $slug = $_GET['slug'];
    $query = mysql_query("SELECT * FROM media WHERE slug = $slug");

    while($row=mysql_fetch_array($query)) {
        echo $row['id'];
    }
}

第二段代码没有返回任何内容,第一段代码返回正确的段塞; /

2 个答案:

答案 0 :(得分:4)

你应该转义变量:

$slug = mysql_real_escape_string($_GET['slug']);
$query = mysql_query("SELECT * FROM media WHERE slug = '". $slug ."'");

此外,您应该将id转换为 int

$id = (int) $_GET['id'];

答案 1 :(得分:1)

您需要在$slug周围添加引号。否则,您的查询看起来就像MySQL解析器一样:

SELECT * FROM media WHERE slug = first-post-slug

这不是有效的SQL查询。