4

我创建了下面的函数;

要检查数据库中是否存在记录,如果记录存在则返回 true,否则返回 false,并且当前返回行的第四列,即字段 $row['isannounced']。

该值将是真或假。但问题是如果该行为空,行数仍为 1。有没有更好的方法来处理这个问题?

提前致谢。

function isnotificationannounced($dspid, $clldsq, $clldtm){
//echo 'in : isnotificationannounced<br>';

$res=false;
$qry = "SELECT * FROM tbl_maindisplay_notification where (clldsq='$clldsq' AND clldtm='$clldtm' AND dspid='$dspid')";
//echo $qry;
    $result = querydb($qry);
    if ($result) {
        $row = mysql_fetch_array($result);
        //echo 'row data:<br>';print_r($row);
        if(count($row)>0){
                $res=$row[4];
                //print_r($row);
        }           
    } else {
        die("existsindb: Query failed");
    }
    unset($clldsd, $clldtm, $tdcode);
return $res;
}
4

5 回答 5

3

使用 mysql_num_rows($result) insted of count($result)

谢谢。

于 2013-01-08T06:59:17.613 回答
1

使用 select * ,您正在查询完整的表格内容。

尝试使用 select count(*) from ,并检查返回值。

于 2013-01-08T06:52:44.017 回答
0

请把条件改成这个....

if(count($row)>0 && $row[4] != ""){
                $res=$row[4];
                //print_r($row);
        }  
于 2013-01-08T06:52:46.633 回答
0

我想你需要看看这篇文章: MySQL SELECT only not null values

引入第二个条件来检查值是否不为空。

于 2013-01-08T07:01:23.723 回答
0
function isnotificationannounced($dspid, $clldsq, $clldtm){
//echo 'in : isnotificationannounced<br>';

$res=false;
$qry = "SELECT * FROM tbl_maindisplay_notification where (clldsq='$clldsq' AND clldtm='$clldtm' AND dspid='$dspid')";
//echo $qry;
    $result = querydb($qry);
    if ($result) {
        $row = mysql_fetch_array($result);
        //echo 'row data:<br>';print_r($row);
        if(empty($row)){
            $res=true;
        }else{
                $res=$row[4];
                //print_r($row);
        }

    } else {
        die("existsindb: Query failed");
    }
    unset($clldsd, $clldtm, $tdcode);
return $res;
}

感谢大家..

我已将代码更新到上面,如果您有任何建议/建议,请告诉我。

于 2013-01-09T10:13:58.623 回答