在这种情况下,我的查询工作正常,我已经在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)."<br/>";
$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值时发生此警告
警告:mysqli_fetch_array()期望参数1为mysqli_result, 数组给出
2.-当我插入数据库中不存在的id值时会发生此警告。
警告:mysqli_fetch_array()需要参数1 mysqli_result,null给出
结论是mysqli_query没有返回结果,但是如果它在数据库中找到具有特定id的行,则返回结果对象。
mysqli_result对象([current_field] =&gt; 0 [field_count] =&gt; 5 [length] =&gt; [num_rows] =&gt; 1 [type] =&gt; 0)
如何摆脱此错误?
答案 0 :(得分:1)
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);//<-- second call...
答案 1 :(得分:0)
使用此..
$result_set = User::find_by_id(1);
if($result_set){
$found_user = $database ->fetch_array($result_set);
}