我试图检查表中的行是否为空且会话也在,我可以知道我在这里做错了什么。
if (empty($row['images']) && (!isset($_SESSION['picture']) || $_SESSION['picture'] == ''))
编辑: 发布代码为我试图根据图片发布一些部门,如果没有图片,我发布一个演示。 我希望我解释得对。
if (mysqli_multi_query($conn, $sql)) {
do {
if ($result = mysqli_store_result($conn)) {
while ($row = mysqli_fetch_array($result)){
if (empty($row['images']) && (!isset($_SESSION['picture']) || $_SESSION['picture'] == '')){
echo "<div>" ;
echo " <img src='images/logo.png' alt=""/>";
echo " <h1>This Is A Demo</h1>";
echo " <p>This is a Demo paragraph .</p>";
echo" <a href='../go_back.php'>Demo</a>";
echo "</div>" ;
} else{
echo "<div>" ;
if(!empty($row['images'])) {
echo " <img src='images/users_iamge.png' alt=""/>";
echo " <h1>Not Demo</h1>";
echo " <p>This is Not Demo paragraph .</p>";
}else{ // fetch the session
echo " <img src='images/users_iamge.png' alt=""/>";
echo " <h1>Not Demo</h1>";
echo " <p>This is Not Demo paragraph .</p>";
}
}
echo'<h1>'
echo'<p>'
echo "</div>";
}
mysqli_free_result($result);
}
} while (mysqli_more_result($conn));
}
答案 0 :(得分:1)
你的逻辑似乎是错误的。 在php中重新basic operators。
仅在第一个条件的计算结果为false时才评估or
中的第二个条件。
因此,如果设置了$_SESSION['picture']
,则$_SESSION['picture'] == ''
的评估将永远不会发生(作为或者评估为真的第一个条件)。
获得您想要的功能(下面的truetable)
Empty | SEmpty | SNull | Result
-------+---------+--------+---------
0 0 0 0
0 0 1 0
0 1 0 0
0 1 0 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
你需要:
if( empty($row['images']) &&
( (isset($_SESSION['picture']) && $_SESSION['picture'] == '') ||
!isset($_SESSION['picture']) )
)