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