使用mysqli num_rows苦苦挣扎

时间:2014-02-01 16:01:45

标签: php mysql mysqli

当我使用此代码时:

<?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中获取非对象的属性

如何解决此问题以检查查询的行数而不是返回错误

2 个答案:

答案 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