当我使用此代码时:
<?php
$stmt = $mysqli->prepare("SELECT * FROM families WHERE famname = ?");
$stmt->bind_param('s', $e);
$result = $stmt->execute();
$stmt->close();
$row_cnt = $result->num_rows;
if($row_cnt == 0) {
$stmt = $mysqli->prepare("INSERT INTO families(famname) VALUES (?)");
$stmt->bind_param('s', $e);
$stmt->execute();
$stmt->close();
}
?>
它给了我一个错误:
注意:尝试在第23行的C:\ xampp \ htdocs \ fl \ index.php中获取非对象的属性
当我echo
$row_cnt
变量时,它也会说:
注意:尝试在第23行的C:\ xampp \ htdocs \ fl \ index.php中获取非对象的属性
如何解决此问题以检查查询的行数而不是返回错误
答案 0 :(得分:1)
mysqli_stmt::execute()预计仅返回TRUE或FALSE。要实现您的行为,请按照this页中的#1示例。
答案 1 :(得分:-1)
哦,我在PHP.net上读了note说:
如果您在使用num_rows时遇到问题,则必须先声明 - &gt; store_result()。
由于@Kei,我也将$result->num_rows
更改为$stmt->num_rows
。