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

Posted

技术标签:

【中文标题】php mysqli 查询期望参数 1 为字符串【英文标题】:php mysqli query expects parameter 1 be to string 【发布时间】:2016-09-15 22:31:25 【问题描述】:

我正在编写一个用户数据库,该数据库调用 find_all 的一个静态方法,该方法调用一个查询方法,该方法反过来返回数据库的所有值,但是每次我尝试调用它时都会遇到麻烦这些错误因为 mysqli_query() 期望参数 1 是 mysqli,字符串在第 20 行的 C:\xampp\htdocs\photogallery\includes\database.php 中给出。我该怎么办?这是代码sn-p 用户.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;  
    

数据库.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 中给出。请帮帮我??

【问题讨论】:

使用mysqli_query($this-&gt;connection,$sql); 第一个参数是connection variable,第二个是query variable 【参考方案1】:

当在程序样式中使用mysqli 时,mysqli_query 的第一个参数必须是连接对象

来自官方documentation:

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

所以你需要改变参数的顺序,$this-&gt;connection 排在第一位,$sql 排在第二位:

$result = mysqli_query($this->connection, $sql);

【讨论】:

但现在这些给了我其他错误可捕获的致命错误:无法将类 mysqli_result 的对象转换为第 20 行 C:\xampp\htdocs\photogallery\includes\database.php 中的字符串跨度> @MonuJoshi 那是因为$result 不是字符串。删除echo【参考方案2】:

只需阅读文档: 混的

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

你必须将你的论点改为

mysqli_query($this-&gt;connection, $sql)

【讨论】:

以上是关于php mysqli 查询期望参数 1 为字符串的主要内容,如果未能解决你的问题,请参考以下文章

MediaWiki:PHP 警告:mysqli::real_escape_string() 期望参数 1 是字符串,给定对象

INSERT 查询产生“警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,给定布尔值”

PHP登录页面因root用户错误而拒绝访问,并期望参数1为mysqli,bool给定[重复]

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,布尔值在 /home/digibeem/public_html/forgot_pass.php 第 55 行 [

警告:mysqli_query() 期望参数 2 是字符串,对象在

mysqli_num_rows() 期望参数通过同一页面上的较早查询有效