繁体   English   中英

如何使用PHP在会话数组中调用/检查MySQL数据库中仅一行的数据?

[英]how to call / check data of only one row of mysql database in a session array using php?

例如,有两个名为

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表的登录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想检查由他在登录会话中插入的product表的selection_status01是标记值),具体取决于以下语法

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

语法异常返回11 ,因为他仍然登录,同时检查数据,并获取其意外似乎与所有行mysql查询从下面的部分product表:

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等不适用于此处,因为数据将通过会话在此处填充。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM