Php 两个mysql查询中的一个不显示结果

Php 两个mysql查询中的一个不显示结果,php,mysql,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['

我正在学习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'];
    }
}

第二段代码不返回任何内容,第一段代码返回正确的slug/

您应该转义变量:

$slug = mysql_real_escape_string($_GET['slug']);
$query = mysql_query("SELECT * FROM media WHERE slug = '". $slug ."'");
您还应该将
id
转换为int

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

您应该转义变量:

$slug = mysql_real_escape_string($_GET['slug']);
$query = mysql_query("SELECT * FROM media WHERE slug = '". $slug ."'");
您还应该将
id
转换为int

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

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

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

这不是有效的SQL查询。

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

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

这不是一个有效的SQL查询。

我猜id是一个整数,slug是一个字符串。你不应该首先使用
mysql\u
函数。我猜id是一个整数,slug是一个字符串。你不应该首先使用
mysql\u
函数。好的,谢谢你的努力,为我指明了正确的道路,谢谢你的努力,为我指明了正确的道路