比如说,有两个数据库表名为
user
id name
-- -----
1 Mike
2 Bob
3 Tony
4 Christina
5 Jamesproduct
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 );现在,如果用户托尼想要检查他在登录会话中插入的product表的selection_status (0 & 1是标记值),这取决于以下语法
if (isset($row_test ["selection_status"]) == "1") {
echo $row_test ["selection_status"];
}语法不寻常地返回1,1,因为他在检查数据时仍然登录,它从product表的以下部分获取所有意外地与mysql查询相匹配的行:
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 LIMIT和WHERE product_id=4等不适用于这里,因为数据将在这里通过会话填充。
发布于 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查询。
https://stackoverflow.com/questions/15388750
复制相似问题