首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用php调用/检查会话数组中只有一行mysql数据库的数据?

如何使用php调用/检查会话数组中只有一行mysql数据库的数据?
EN

Stack Overflow用户
提问于 2013-03-13 14:55:43
回答 1查看 527关注 0票数 0

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

user

代码语言:javascript
复制
id    name
--   -----
1     Mike
2     Bob
3     Tony
4     Christina
5     James

product

代码语言:javascript
复制
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语法插入的。

代码语言:javascript
复制
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 );

现在,如果用户托尼想要检查他在登录会话中插入的product表的selection_status (0 & 1是标记值),这取决于以下语法

代码语言:javascript
复制
if (isset($row_test ["selection_status"]) == "1") {
echo $row_test ["selection_status"];
}

语法不寻常地返回11,因为他在检查数据时仍然登录,它从product表的以下部分获取所有意外地与mysql查询相匹配的行:

代码语言:javascript
复制
product_id    chooser_id   chooser_name   selection_status
----------   -----------   -------------  -----------------
   4               3             Tony              1
   5               3             Tony              1

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

代码语言:javascript
复制
product_id    chooser_id   chooser_name   selection_status
----------   -----------   -------------  -----------------
   4               3             Tony              1

代码语言:javascript
复制
product_id    chooser_id   chooser_name   selection_status
----------   -----------   -------------  -----------------
   5               3             Tony              1

请注意,mysql LIMITWHERE product_id=4等不适用于这里,因为数据将在这里通过会话填充。

EN

回答 1

Stack Overflow用户

发布于 2013-03-17 10:27:28

这个问题已经解决了。在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的例外情况。在这种情况下,在必要时,应该使用php条件语句或比较语句调用标记值,而不是mysql查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15388750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档