【问题标题】:Error Warning: mysqli::mysqli() expects parameter 2 to be string, object given in错误警告:mysqli::mysqli() 期望参数 2 是字符串,对象在
【发布时间】:2017-02-24 19:45:11
【问题描述】:

我在与 mysqli 相关的 60 行上遇到此错误。我尝试了一些修改,但没有成功。

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

<?php

    class KT_Connection {

        /**
         * The database name
         * @var string
         * @access private
         */
        var $databaseName = '';

        /**
         * The connection Resource ID
         * @var object ResourceID
         * @access private
         */
        var $connection = null;

        /**
         * Flag. what server model is.
         * @var string
         * @access private
         */
        var $servermodel = "mysql";

        /**
         * for ADODB compatibility
         * @var string
         * @access public
         */
        var $databaseType = "mysql";

        /**
         * The constructor
         * Sets the connection and the database name
         * @param object ResourceID &$connection
         * @param string $databasename
         * @access public
         */
        function KT_Connection(&$connection, $databasename) {
            $this->connection = &$connection;
            $this->databaseName = $databasename;
        }

        /**
         * Executes a SQL statement
         * @param string $sql
         * @return object unknown
         *         true on success
         *         response Resource ID if one is returned by the wrapper function
         * @access public
         */
        function Execute($sql) {
            if (!mysqli_select_db($this->databaseName, $this->connection)) {
                return false;
            }           
            $response = mysqli_query($sql, $this->connection);
            if (!is_resource($response)) {
                return $response;
            } else {
                $recordset = new KT_Recordset($response);
                return $recordset;
            }
        }

        /**
         * Executes a SQL statement
         * @param string $sql
         * @return mysql resource
         *         true on success
         *         response MYSQL Resource ID
         * @access public
         */
        function MySQL_Execute($sql) {
            if (!mysqli_select_db($this->databaseName, $this->connection)) {
                return false;
            }   
            $response = mysqli_query($sql, $this->connection);
            return $response;
        }

        /**
         * Gets the error message
         * @return string
         * @access public
         */
        function ErrorMsg() {
            return mysqli_error($this->connection);
        }

        /**
         * Gets the auto-generated inserted id (if any)
         * @return object unknown
         * @access public
         */
        function Insert_ID($table, $pKeyCol) {
            return mysqli_insert_id($this->connection);
        }
    }
    ?>

【问题讨论】:

  • 你已经为所有与数据库相关的代码交叉了变量

标签: php mysqli


【解决方案1】:

你有

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

我认为这是必要的

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

【讨论】:

    【解决方案2】:

    问题在于您的连接建立,

    根据php手册mysqli_select_db

    bool mysqli_select_db ( mysqli $link , string $dbname )
    

    参数¶

    链接

    仅程序样式:mysqli_connect() 或 mysqli_init() dbname 返回的链接标识符

    数据库名称。

    您已将传递给 mysqli_select_db 函数的参数颠倒如下:

    mysqli_select_db($this->databaseName, $this->connection)
    

    虽然它必须如下:

    mysqli_select_db($this->connection, $this->databaseName)
    

    【讨论】:

    • 警告:mysqli_select_db() 期望参数 1 为 mysqli,在中给出 null
    • 这意味着您与数据库的连接 (mysqli_connect) 尚未建立,请检查您的连接
    • connect_errno) { echo "Falha ao conectar: (" . $mysqli->connect_errno . ") " . $mysqli->连接错误; } 其他 { 回声“好”; } ?>
    • 这是关于如何将连接对象传递给KT_Connection 类,通过更详细的代码更新您的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    相关资源
    最近更新 更多