我正在编写一个用户数据库,该数据库调用一个find_all的静态方法,该方法调用一个查询方法,该查询方法又返回数据库的所有值,但是每次当我尝试调用它时,我发现这样做有麻烦它给了我这些错误,因为mysqli_query()要求参数1为mysqli,字符串在第20行的C:\ xampp \ htdocs \ photogallery \ includes \ database.php中给出。我该怎么办?这是代码片段 user.php的
require_once("database.php");
class User{
public static function find_all(){
global $database;
$sql= "select * from users";
$result_set = $database->query($sql);
return $result_set;
}
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;
}
}
database.php中
public function query($sql){
echo $sql;
$this->last_query = $sql;
echo $result = mysqli_query($sql,$this->connection);
$this->confirm_query($result);
return $result;
}
public function confirm_query($result){
if(!$result){
die("Database query failed:".mysqli_error());
}
}
和index.php,代码调用如下:
<?php
require_once("../includes/database.php");
require_once("../includes/user.php");
$q = User::find_all();
?>
每当错误发生时,mysqli_query期望参数1为mysqli,在第20行的C:\ xampp \ htdocs \ photogallery \ includes \ database.php中给出字符串。请帮帮我吧?
答案 0 :(得分:1)
在过程样式中使用mysqli
时,mysqli_query
的第一个参数必须是连接对象
来自官方documentation:
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
因此,您需要更改参数的顺序,$this->connection
先行,$sql
成为第二位:
$result = mysqli_query($this->connection, $sql);
答案 1 :(得分:0)
阅读文档:
混合
mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
您必须将参数更改为
mysqli_query($this->connection, $sql)