在我准备好的语句中,我可以检索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");
}
我是否在代码中遗漏了某些内容,或者还有其他任何方式可以执行此操作吗?
答案 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
}