0

比如说,有两个名为的数据库表

user

id    name
--   -----
1     Mike
2     Bob
3     Tony
4     Christina
5     James

product

product_id    chooser_id   chooser_name   selection_status
----------    ----------   ------------   -----------------
   1               1             Mike              0
   2               2             Bob               1
   3               3             Tony              0
   4               3             Tony              1
   5               3             Tony              1

这里上product表中可用的数据是由表的登录用户user根据以下mysql语法插入的。

mysql_select_db($database_XYZ, $XYZ);
$query_test = "SELECT user.id, user.name, product.product_id, product.chooser_id, product.chooser_name, product.selection_status FROM user, product WHERE user.id = '$_SESSION[userid]' AND user.id = product.chooser_id AND product.selection_status = 1 ";
$test = mysql_query($query_$test, $XYZ) or die(mysql_error());
$row_test  = mysql_fetch_assoc($test );
$totalRows_test  = mysql_num_rows($test );

现在,如果用户Tony想要检查他在登录会话中插入的表的selection_status0&1是标记值),product具体取决于以下语法

if (isset($row_test ["selection_status"]) == "1") {
echo $row_test ["selection_status"];
}

语法异常返回1,因为他在检查数据时仍处于登录状态,并且它从表的以下部分1获取意外似乎与查询匹配的所有行:mysqlproduct

product_id    chooser_id   chooser_name   selection_status
----------   -----------   -------------  -----------------
   4               3             Tony              1
   5               3             Tony              1

如何使用替代php条件语句在会话数组中仅调用/检查一行mysql数据库,以便在每次检查或调用中仅返回一行数据?

product_id    chooser_id   chooser_name   selection_status
----------   -----------   -------------  -----------------
   4               3             Tony              1

或者

product_id    chooser_id   chooser_name   selection_status
----------   -----------   -------------  -----------------
   5               3             Tony              1

请注意,mysql LIMITWHERE product_id=4将不适用于此处,因为数据应通过会话填充到此处。

4

1 回答 1

0

问题已解决。在 if (isset($row_test ["selection_status"]) == "1"){ 。isset 在可用数据上返回真或非空。所以我删除了它并将语法更改为 if ($row_test ["selection_status"] == "1"){ 。AND product.selection_status = 1此外,我从 mysql 语法中删除了条件。

从这篇文章中学到的教训: flagged value作为基于会话的复杂mysql查询中的条件,用于过滤唯一/主 id 特定行的条件不能维持session variable. 这是不遵循的例外情况session rule。在这种情况下,应该在必要时使用 php 条件或比较语句调用标记值,而不是 mysql 查询。

于 2013-03-17T10:27:28.960 回答