当您通过MysqLi执行一条语句时,直到您获取结果,结果才真正在PHP中出现- 结果由数据库引擎保存。因此,MysqLi_stmt
对象无法知道执行后立即有多少结果。
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// Now you can check $stmt->num_rows;
这不适用于您的特定示例,但是如果您的结果集很大,$stmt->store_result()
则会消耗大量内存。在这种情况下,如果您关心的只是弄清楚是否至少返回了一个结果,请不要存储结果。相反,只需检查结果元数据是否不为空:
$stmt->execute();
$hasResult = $stmt->result_Metadata ? true : false;