【问题标题】:mysqli_prepare() expects parameter 1 to be mysqli, object given [duplicate]mysqli_prepare() 期望参数 1 为 mysqli,给定对象 [重复]
【发布时间】:2014-11-11 11:57:07
【问题描述】:

好的。所以基本上。这是我的代码。

login.php

require_once("./libs/db_cxn.php");

    $cxn = new newConnection();

    $stmt = "SELECT users.username FROM users WHERE username=$username AND password=MD5($password)";
    $qry = \mysqli_prepare($cxn, $stmt);
    $res = mysqli_execute($qry);

db_cxn.php

class newConnection{

    function __construct(){
        $conf = array(
            "host" => "localhost",
            "username" => "root", 
            "password" => "root",
            "dbname" => "db_BookWorm",
            "port" => ini_get("mysqli.default_port"),
            "socket" => ini_get("mysqli.default_socket"),
            "prefix" => "bWorm_"
        );
        $cxn = new mysqli($conf["host"], $conf["username"], $conf["password"], $conf["dbname"]);

        if ($cxn->connect_errno){
            \printf("Connection failed: %s\n", $cxn->connect_error);
            exit();
        }
    }

    function _destruct(){
        mysqli_close($this);
    }
}

我有错误报告,每当我尝试运行该代码时都会给出以下错误消息

Warning: mysqli_prepare() expects parameter 1 to be mysqli, object given in \\MORIARTY\HOME\15\5CBA2901\Desktop\comp_proj\project\www\login.php on line 34

关于如何解决这个问题的任何线索?由于我打开连接的频率,我创建了这个连接类,并认为它可以节省我的时间和悲伤。任何帮助将不胜感激!

【问题讨论】:

  • 传递给mysqli_prepare$cxnnewConnection 类型的对象实例。但是mysqli_prepare 需要mysqli 类型的对象实例。您所做的根本不是对象的工作方式。

标签: php mysql mysqli


【解决方案1】:

像这样更改您的代码:

<?php

/**
  ---------------------
  for db_cxn.php file
  ---------------------
 * */
class newConnection {
    static $cxn;

    function __construct() {
        $conf = array(
            "host" => "localhost",
            "username" => "root",
            "password" => "",
            "dbname" => "test",
            "port" => ini_get("mysqli.default_port"),
            "socket" => ini_get("mysqli.default_socket"),
            "prefix" => ""
        );
        self::$cxn = mysqli_connect($conf["host"], $conf["username"], $conf["password"], $conf["dbname"]);

        if (self::$cxn->connect_errno) {
            \printf("Connection failed: %s\n", self::$cxn->connect_error);
            exit();
        }
    }

    function getConnection() {
        return self::$cxn;
    }

    function _destruct() {
        mysqli_close($this);
    }
}
<?php

/* * *
  ----------------
  for login.php
  ----------------
 */
require_once("./libs/db_cxn.php");

$obj = new newConnection();
$cxn = $obj->getConnection();
$id = 1;
$stmt = "SELECT users.username FROM users WHERE username=$username AND password=MD5($password)";
$qry = mysqli_prepare($cxn, $stmt);
$res = mysqli_execute($qry);

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多