检查php prepare语句中是否为空

时间:2014-10-07 06:13:44

标签: php mysql mysqli

在我准备好的语句中,我可以检索MySQL返回的值,但是如果MySQL没有返回任何数据,则无法通知用户。

以下是我准备好的陈述的代码。

$database是mysqli连接的对象。

$stmt = $database->prepare($qryCallProc);
$stmt->bind_param('iss',$userId,$trendType,$university);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($param1,$param2);
while($stmt->fetch) {
    print_r($param1);
}
$stmt->free_result();
$stmt->close();

我在$stmt->bind_result($param1,$param2)之后尝试使用以下代码,但没有用:

if(!$stmt->fetch()) {
    print_r("there is no data");
} elseif (is_null($stmt->fetch())) {
    print_r("there is no data");
}

我是否在代码中遗漏了某些内容,或者还有其他任何方式可以执行此操作吗?

2 个答案:

答案 0 :(得分:2)

您可以先使用num_rows来检查您的查询是否产生了行:

if($stmt->num_rows > 0) {
    $stmt->store_result();
    $stmt->bind_result($param1,$param2);
    while($stmt->fetch) {
        echo $param1;
    }
} else {
    // sorry no rows found
}

答案 1 :(得分:1)

鬼在理论上回答正确,但是在使用store_result()之前必须num_rows 以下是Ghost编辑的答案:

您可以先使用num_rows来检查查询是否产生了行:

$stmt->store_result();
if($stmt->num_rows > 0) {
    $stmt->bind_result($param1,$param2);
    while($stmt->fetch) {
        echo $param1;
    }
} else {
    // sorry no rows found
}