【问题标题】:mysqli_query() expects parameter 1 to be mysqli, object givenmysqli_query() 期望参数 1 是 mysqli,给定对象
【发布时间】:2014-02-08 23:45:26
【问题描述】:

我正在尝试创建一个可用于连接 MySQL 数据库的类。这是我的代码:

班级:

<?php

class createCon  {
    var $host = 'localhost';
    var $user = 'root';
    var $pass = '';
    var $db = 'example';
    var $myconn;

    function connect() {
        $con = mysqli_connect($this->host, $this->user, $this->pass, $this->db);
        if (!$con) {
            die('Could not connect to database!');
        } else {
            $this->myconn = $con;
            echo 'Connection established!';}
        return $this->myconn;
    }

    function close() {
        mysqli_close($myconn);
        echo 'Connection closed!';
    }

}

这是我尝试查询数据库的地方:

<?php

include 'connect.php';

$connection = new createCon();
$connection->connect();

$query = 'SELECT * FROM  `nickname`';
$result = mysqli_query($connection, $query);

if($numrows = mysqli_num_rows($result)) {
    echo $numrows;
    while ($row = mysqli_fetch_assoc($result)) {
        $dbusername = $row['nick'];
        $dbpassword = $row['pass'];
        echo $dbusername;
        echo $dbpassword;
    }
}

我在尝试进行查询时收到以下错误:

警告:mysqli_query() 期望参数 1 为 mysqli,对象在 C:\wamp\www\uppgift 1 kompletering\test.php 第 13 行给出

【问题讨论】:

    标签: php class oop mysqli


    【解决方案1】:

    您想传入$connection-&gt;myconn 而不是$connection。如:

    $result = mysqli_query($connection->myconn, $query);
    

    就目前而言,您传递的是类的实例,而不是 mysqli,这是错误消息所抱怨的。

    【讨论】:

      【解决方案2】:

      在数据库连接类中,您返回连接。在 PHP 类中,您必须捕获该连接变量

      $connection = new createCon();
      $conn = $connection->connect();
      

      然后您可以将 $conn 变量用作 mysqli_query() 参数,例如

      $result = mysqli_query($conn, $query);
      

      【讨论】:

        【解决方案3】:

        我个人使用 Wolf Softwaremysqli_ext 并稍作修改。他们的网站不再提供下载,但我已经放置了我的网站的副本供您下载。它是在 GPL 下获得许可的,因此您可以对其进行修改。它可能会取代您的课程,或者它可能会为您提供让您的课程正常工作所需的信息!

        连接:

        $sDB = new mysqli_ext($dbHost, $dbUser, $dbPass, $dbBase);
        if ($sDB->connection_failed) {
            /* Error */
        }
        

        选择查询:

        $sDB->select("SELECT * FROM `albums` WHERE `listedtype` = 'PUBLIC' ORDER BY `createdon` LIMIT ?, ?", "ii", $aStart, $aAlbums);
        

        其他查询:

        $sDB->execute_query("UPDATE `photos` SET `views` = `views` + 1 WHERE `picid` = ?", "s", $sPhoto);
        

        下载地址:http://www.tip2tail.co.uk/files/mysqli.class.zip

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-26
          • 2015-06-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多