【发布时间】:2015-09-12 17:32:45
【问题描述】:
我有一个简单的查询:
$q5 = "select listingid FROM userlisting WHERE userid = '$_SESSION[UserID]'";
$r5 = mysql_query($q5) or die(mysql_error());
$a5 = mysql_fetch_array($r5);
用户列表是多对多关系。它用作查找表。每个用户 ID 可以与多个列表 ID 相关联,反之亦然。
在我的文件(一个 html 模板文件)中我也有这段代码
if(!empty($_SESSION[UserID]) and $a5['listingid'] == $_GET['id']) :
所以我想检查 userlisting 表中的 listingid 列是否 = 页面的 id(嗯,它是一个属性网站,它是属性的 id)。由于每个用户都可以与许多列表 ID 相关联,因此我需要能够检查多行。但由于某种原因,它只检查第一行。
在 userlisting 表中有以下测试条目: 用户名 |列表id 1 1 1 2
因此,一个用户与两个列表 ID 相关联。但是,它的行为就像这个用户 ID 只与列表 ID 1 相关联,即第一行。
【问题讨论】:
-
请注意 SQL 查询中的字符串连接。如果用户 ID 可以包含撇号或反斜杠,而无需转义或参数化,则可能会破坏查询或允许注入未经授权的 SQL。
-
如果这就是你所有的代码,你只是获取任何结果集的第一行。另请注意,
mysql_*()已被弃用,将在 PHP 的下一版本中删除。不要将它用于新代码。使用mysqli_*()或PDO
标签: php mysql sql arrays database