我想根据查询是否为null来创建条件并打印两个不同的表。以下是我的代码。
$number_of_date= "SELECT SUM(number_of_date) AS number_of_date
FROM emp_leaves
WHERE emp_id='$userID'
AND leave_category='Annual'
AND apply_year='$year'";
$number_date = mysql_query ($number_of_date);
if (($number_date == 'NULL'))
{
$result2 = "SELECT * FROM leave_info
WHERE employment_type='permanent'
AND leave_type='annual'";
$sql2 = mysql_query ($result2);
while($row = mysql_fetch_array($sql2)) {
?>
<tr>
<td><?php echo $row["leave_type"]?></td>
<td><?php echo $row["leave_count"]?></td>
</td></tr><?php }
}
else
{
$sql = "SELECT * FROM emp_leaves
WHERE emp_id='$userID'
AND leave_category='Annual'
ORDER BY leave_id DESC limit 1";
$result = mysql_query ($sql);
while($row = mysql_fetch_array($result)) {
?>
<tr>
<td><?php echo $row["leave_category"]?></td>
<?php }?><?php
while($row11 = mysql_fetch_array($number_date)) {
?>
<td><?php echo $row11["number_of_date"]?></td><?php } } ?>
</tr>
但是,“如果”条件不起作用。制造这种情况的正确方法是什么。有人请帮助我!
答案 0 :(得分:2)
if(isset($number_date))
或if(empty($number_date))
修改强>
看看HERE
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()成功时返回TRUE,错误时返回FALSE。
所以请试试这个。
if (mysql_query ($number_of_date))
或您的代码编辑就像这样。
if (($number_date == true))
答案 1 :(得分:2)
检查执行或查询结果是否有行
if (!$number_date or count($number_date) < 1){
if(mysql_error()){
die('Invalid query: ' . mysql_error());
}
}
mysql_query($sql)
执行查询并返回结果,我们需要检查,查询是否已执行如果条件if($number_date)
表示查询已执行,if(!$number_date)
表示查询未执行
答案 2 :(得分:1)
试,
$number_of_date= "SELECT SUM(number_of_date) AS number_of_date
FROM emp_leaves
WHERE emp_id='$userID' AND
leave_category='Annual' AND
apply_year='$year'";
$res_qry = mysql_query($number_of_date)
or
die ('Invalid query :: <br/>'.$number_of_date.
' <br/>'.mysql_error());
$rowqry = mysql_fetch_assoc($res_qry);
$number_date = $rowqry ['number_of_date'];
现在使用,$ number_date
if (($number_date == '') || empty($number_date))
如果查询返回NULL,通常PHP会将其视为空..
您也可以尝试is_null()
请注意,不推荐使用mysql函数。 改用MySQLi或PDO。从以下查询中获得参考。
答案 3 :(得分:1)
我假设你指的是
行if (($number_date == 'NULL'))
这不起作用,因为您将变量$number_date
与字符串 'NULL'
进行比较,而不是值 NULL
即可。为了测试mysql_query ($number_of_date)
是否返回 NULL
,您需要使用函数is_null()
,作为
if (is_null($number_date))
话虽如此,我还要说DO NOT USE THE mysql_*
API!这个API因为一些很好的理由而被弃用;请迁移您的代码以使用mysqli
或PDO
。这两个API都提供了预备语句,这些语句(除其他外)提供了针对SQL injection attacks的保护措施。
答案 4 :(得分:1)
来自mysql_query()manual:
对于返回结果集的SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句,mysql_query()在成功时返回资源,如果出错则返回FALSE。
因此,您的支票== 'NULL'
是错误的。如果查询成功,函数将返回句柄,否则返回FALSE
。您可以检查!== false
是否找到了某些内容。此处与isset()
,empty()
或if (!$number_date)
的任何其他答案也是正确的。
另请注意,PHP中的mysql扩展名已弃用。更好地使用其他扩展程序,例如mysqli or PDO。