Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysqli:PHP致命错误:调用成员函数fetch_array()_Php_Mysql_Mysqli - Fatal编程技术网

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

mysqli:PHP致命错误:调用成员函数fetch_array(),php,mysql,mysqli,Php,Mysql,Mysqli,我在准备发言时遇到了一些麻烦。基本上,这个查询不返回任何行,尽管我知道这个查询应该返回多行。我以为这只是SQL注入造成的问题,但我不知道,也许我在这里做错了什么。如果我检查有多少行,我会得到一个错误: PHP致命错误:调用成员函数fetch_array() 任何帮助都将不胜感激 $stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?"); $stmt->bind_param('ss',$use

我在准备发言时遇到了一些麻烦。基本上,这个查询不返回任何行,尽管我知道这个查询应该返回多行。我以为这只是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;
    }

使用$stmt->bind_result($result)时;您正在将sid从数据库绑定到变量$results。因此,您不能执行以下操作:

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

我会这样做:

<?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,如果是,则显示“此处无结果”,如果不将结果放入数组中

<?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;
}

?>