【问题标题】:How do I SELECT all rows WHERE from a table?如何从表中选择所有行 WHERE?
【发布时间】:2015-06-27 18:39:54
【问题描述】:

顺便说一句,在提到之前,我很清楚我应该使用 mysqli。提前致谢。

这是我的代码:

$q5 = "select listingid FROM userlisting WHERE userid = '$_SESSION[UserID]'";
$r5 = mysql_query($q5) or die(mysql_error());
$a5 = mysql_fetch_array($r5);

用户列表表是一个“查找”表,有两列: 用户 ID 和列表 ID 它具有多对多的关系。换句话说,可能有一个用户 ID 附加(关联)到多个列表 ID,因此该表中有多个行。

e.g.
userid|listingid
1|1
1|2
1|3
2|1
etc

为了简单起见:我要做的是检查以下内容:

$a5['listingid'] == $_GET['id']

如果为真我会显示信息,如果为假则不显示信息。

所以在 mywebsite.com 页面上会有一个 ID,mywebsite.com?id=[id here]。我正在尝试查看用户 $_SESSION[UserID] 在用户列表表中是否有与页面 id 匹配的条目(嗯,它是一个属性网站,id 是属性列表的 id)。

目前,我上面的代码仅搜索/检查该用户 ID 的第一行。在我上面给出的示例中,listingid ='1' 它没有看到第 2 行和第 3 行也有条目,listingid = '2' 和 '3' 分别。所以在mywebsite.com?id=1 上它是真的,但在?id=2 和 id=3 上它是假的,但是 userid = 1 有三行,分别是条目 1、2 和 3。

我一直在努力寻找解决方案,现在我开始感到沮丧。如果有人能为我想出一个快速的解决方案,我将不胜感激。

【问题讨论】:

  • 这不会创建您期望的查询字符串:".....'$_SESSION[UserID]'"。所以转储该查询字符串以了解我的意思。

标签: php mysql


【解决方案1】:

您可以使用诸如

之类的子句在 SQL 上检查两者
WHERE userid=XX AND listingid=XX

记得转义 get 参数 ;)

PS:你可以用一段时间来迭代 mysql_fetch_row 并搜索是否有人是正确的。比如:

$correct_check = false;
while($a5 = mysql_fetch_array($r5)) {
    if($a5['listingid'] == $_GET['id']) $correct_check = true;
}
if($correct_check) ....
else ....

【讨论】:

    【解决方案2】:

    试试这样的

    $page_id = $_GET['id'];
    $q5 = "select listingid FROM userlisting WHERE userid = '$_SESSION[UserID]' and listingid = '$page_id' ";
    $res = mysql_qury($result);
    $num_rows = $mysql_num_rows($res);
    
    if($num_rows > 0) 
    //your ok code
    else
    //fail message
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-29
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2018-10-09
      • 1970-01-01
      • 2015-10-13
      相关资源
      最近更新 更多