SELECT id WHERE id等于传递的值

时间:2011-11-14 18:41:10

标签: php mysql

我将“id”值从一个页面media_main.php传递给另一个player.php:

<a href="javascript:;" onclick="return popitup('player.php?pid=<?php echo ("$row->id");?>')" title="Listen">

在player.php页面上,我想选择某些数据,其中id等于传递的id。到目前为止,我有这个:

$query = "SELECT id, media_date, media_title, given_by, filename FROM media WHERE id = ?? ORDER BY id DESC";

我不知道如何处理WHERE子句,因为它会改变而不是静态数字。我只想在id等于传递的id值时选择数据。

2 个答案:

答案 0 :(得分:2)

从代码的外观中,您通过URL参数(pid)传递ID,在这种情况下,您只需要转义字符串以防止SQL注入并使用结果构建查询ID:

$pid = mysql_real_escape_string($_GET['pid']);

$query = "SELECT id, media_date, media_title, given_by, filename FROM media WHERE id = '$pid' ORDER BY id DESC";

检查传递的值是否为数字可能是明智的。

此外,如果id是主要/唯一密钥,那么您可以从查询中删除ORDER BY子句,因为它没有任何区别。

修改 答案已按照以下评论中的建议进行了更新,以包含SQL参数的引号。

答案 1 :(得分:2)

除了Clive的回复,如果您知道ID只是数字,您可以将其转换为Integer而不是转义它。

如果有任何错误输入,它只会将其转换为0。

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

$query = "SELECT id, media_date, media_title, given_by, filename FROM media WHERE id = '$pid' ORDER BY id DESC";