php result_array,关于php:警告:mysqli_fetch_array()期望参数1为mysqli_result,给定数组...

作者探讨了一个关于自定义MySQL查询函数与User类交互时遇到的问题,函数期望mysqli_result而非数组。通过实例展示了如何识别错误、确认查询结果类型,并提出解决方案,确保正确处理数据库查询结果。
摘要由CSDN通过智能技术生成

在这种情况下,我的查询工作正常,我已经在mysql上对其进行了测试。

首先,我有一个自定义查询函数,该函数在MySQLDatabase类中看起来像这样

public function query($query) {

$this->last_query = $query;

$resultado = mysqli_query($this->connection, $query);

$this->confirm_query($resultado);

return $resultado;

}

private function confirm_query($result) {

if ($result  === FALSE) {

print_r(mysqli_fetch_assoc($result));

$output ="Error on query".  mysqli_error($this->connection)."
";

$output .="Last query :".$this->last_query;

die($output);

}

}

public function fetch_array($result_set){

return mysqli_fetch_array($result_set);

}

然后我有一个名为User的类,它使用MYSQL类

public static function find_by_id($id=0){

global $database;

$result_set = $database -> query("SELECT * FROM users WHERE id={$id}");

$found = $database ->fetch_array($result_set);

return $found;

}

最后,我以这种方式调用index.php中的方法

$result_set = User::find_by_id(1);

$found_user = $database ->fetch_array($result_set);

以下是一些事实:

1.-当我插入数据库中存在的ID值时,会发生此警告

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result,

array given

2.-当我插入数据库中不存在的id值时,会发生此警告。

Warning: mysqli_fetch_array() expects parameter 1 to be

mysqli_result, null given

结论是mysqli_query不是返回结果,而是一个结果对象(如果它在数据库中找到具有特定id的行的情况下)。

mysqli_result Object ( [current_field] => 0 [field_count] => 5

[lengths] => [num_rows] => 1 [type] => 0 )

我如何摆脱这个错误?

found_by_id方法已经在这里调用mysqli::fetch_array:

$found = $database ->fetch_array($result_set);

如果您随后写入,它将返回获取的数组:

$result_set = User::find_by_id(1);

$found_user = $database ->fetch_array($result_set);//fetch_array again

您将获取的数组传递回fetch_array,这不起作用

与编写此代码完全相同:

$result_set = $database -> query("SELECT * FROM users WHERE id=1");

$found = $database ->fetch_array($result_set);

$found_user = $database->fetch_array($found);//

您还好,我正在将数组传递给fetch_array

用这个..

$result_set = User::find_by_id(1);

if($result_set){

$found_user = $database ->fetch_array($result_set);

}

无法解决问题,请参阅我的答案:fetch_array被调用两次

我认为有时$ result_set不返回任何值。 这样就给错误了。

仔细阅读错误消息:" mysqli_fetch_array()期望参数1为mysqli_result,给定数组" $database->fetch_array($result_set);,这意味着$result_set是不是结果资源的数组

好,很好 - - - - - - - - - - - - - -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值