我想根据查询是否为null来设置if条件,并打印两个不同的表。以下是我的代码。
$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>
但是,"如果"条件不起作用。产生这种状况的正确方法是什么。任何人都请帮帮我!
您可以使用isset()或empty()php函数。
if(isset($number_date))
或if(empty($number_date))
编辑
看看这里
对于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))
检查查询执行或结果是否没有行
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)
表示查询未执行
try,
$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。有以下查询中的引用。
http://php.net/manual/en/book.mysqli.php
http://php.net/manual/en/book.pdo.php
我想你指的是行
if (($number_date == 'NULL'))
这将不起作用,因为您将变量$number_date
与字符串'NULL'
进行比较,而不是与NULL
值进行比较。为了测试mysql_query ($number_of_date)
是否返回NULL
,您需要使用函数is_null()
作为
if (is_null($number_date))
话虽如此,我还要说不要使用mysql_*
API由于许多非常好的原因,此API已被弃用;请迁移您的代码以使用mysqli
或PDO
。这两个API都提供了准备好的语句,这些语句(除其他外)提供了针对SQL注入攻击的保护措施。
来自mysql_query()手册:
对于SELECT、SHOW、DESCRIBE、EXPLAIN和其他返回结果集的语句,mysql_query()在成功时返回资源,在错误时返回FALSE。
所以你的支票== 'NULL'
是错的。如果查询成功,函数将返回handle,否则返回FALSE
。你可以检查!== false
是否发现了什么。这里用isset()
、empty()
或if (!$number_date)
的任何其他答案也是正确的。
另外,请注意,PHP中的mysql扩展是不推荐使用的。最好使用其他扩展,如mysqli或PDO。