SELECT id WHERE id等于传递的值


SELECT id WHERE id equals a passed value

我将"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值时选择数据。

除了Clive的响应之外,如果您知道ID只是数字,则可以将其转换为整数而不是转义。

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

$pid = (int) $_GET['pid'];
$query = "SELECT id, media_date, media_title, given_by, filename FROM media WHERE id = '$pid' ORDER BY id DESC";

从代码的外观来看,您通过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参数周围添加了引号。