2016-05-19 83 views
0

我编写了一个用户数据库,它调用find_all的静态方法,该方法调用一个查询方法,该方法反过来返回数据库的所有值,但我每次都发现这样做的麻烦当我尝试调用它时,它给了我这些错误,因为mysqli_query()期望参数1是mysqli,字符串在C:\ xampp \ htdocs \ photogallery \ includes \ database.php中给出。我该怎么办?这里是代码片段 user.php的php mysqli查询期望参数1是字符串

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,字符串在C:\ xampp \ htdocs \ photogallery \ includes \ database.php中有第20行。请帮我?

+0

使用'mysqli_query($这个 - >连接,$ SQL);'第一参数是“连接变量”,第二个是“查询变量”。 – RJParikh

回答

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); 
+0

但现在这些给我其他错误可捕获的致命错误:类mysqli_result的对象不能转换为字符串在C:\ xampp \ htdocs \ photogallery \ includes \ database.php上线20 –

+0

@MonuJoshi那是因为'$ result'不是一个字符串。删除'echo' – dimlucas

0

只要阅读文档:
混合

mysqli_query (mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ])  

你必须改变你的论点

mysqli_query($this->connection, $sql)

相关问题