php mysqli查询期望参数1为字符串

时间:2016-05-19 07:24:04

标签: php mysql database oop mysqli

我正在编写一个用户数据库,该数据库调用一个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中给出字符串。请帮帮我吧?

2 个答案:

答案 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)