mysqli:PHP致命错误:调用成员函数fetch_array()

时间:2013-12-08 19:26:01

标签: php mysql mysqli

我在准备好的陈述方面遇到了一些麻烦。基本上,这个查询没有返回任何行,即使我知道这个查询应该返回多行。我认为这只是一个问题,因为SQL注入,但也许我在做其他错误,我不知道。如果我检查有多少行,我会收到一个错误:

PHP致命错误:调用成员函数fetch_array()

任何帮助将不胜感激!

 $stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?");

    $stmt->bind_param('ss',$username,$structureType);

    $stmt->execute();

    $stmt->bind_result($results);

    $stmt->fetch();

    if ($results) {

        if($results->num_rows == 0) {
            print("No results here.");
            return 0;
        }

        $recordnames = array();

        while ($next_row = $results->fetch_array()) {
               $recordnames[] = $next_row['sid'];
        }

        return $recordnames;
    }

1 个答案:

答案 0 :(得分:0)

当你使用$ stmt-> bind_result($ result);您正在将数据库中的sid绑定到变量$ results。因此,您无法执行以下操作:

if($results->num_rows == 0) { //... }

$results->fetch_array();

我就是这样做的:

<?php

$stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?");
$stmt->bind_param('ss', $username, $structureType);
$stmt->execute();
$stmt->bind_result($sid);
$stmt->store_result();

if ($stmt->num_rows == 0) 
{
    print("No results here.");

    $stmt->close();

    return 0;
}
else
{
    $recordnames = array();

    while($stmt->fetch())
    {
        $recordnames[] = $sid;
    }

    return $recordnames;
}

?>

这种方式使用不同的逻辑,检查行计数是否为0,如果是,则显示“此处没有结果”,如果没有将结果放入数组中。