我正在学习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'];
}
}
第二段代码没有返回任何内容,第一段代码返回正确的段塞; /
答案 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查询。