自定义数据库连接不工作在php


Custom database connection not working in php

我有这个类,将建立一个连接到MySQL数据库在php。但它似乎有问题,显然我犯了一个错误。

这是类:

class dbConnection {
    public $CONN;
    public function __construct() {
        $dbservername = "localhost";
        $dbusername = "test";
        $dbpassword = "pass";
        $dbname = "dbtest";
        // Create connection
        $this->CONN = new mysqli($dbservername, $dbusername, $dbpassword, $dbname);
        // Check connection
        if ($this->CONN->connect_error) {
            die("Connection failed: " . $CONN->connect_error);
        }
        return $this->CONN;
    }
    public function close() {
        $this->CONN->close();
    }
}

这是调用类来执行INSERT:

$conn = new dbConnection();
$stmt = $conn->prepare("INSERT INTO tablename (stuff1, stuff2, stuff3) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $val1, $val2, $val3);
// set parameters and execute
$val1 = "val1";
$val2 = "foo";
$val3 = "bar";
$stmt->execute();
$stmt->close();

错误显示为:

Fatal error: Uncaught Error: Call to undefined method dbConnection::prepare() in /var/www/index.php:7 Stack trace: #0 {main} thrown in /var/www/index.php on line 7

如果我在类中设置一个函数并调用它而不是构造函数,则可以工作,但我希望使用构造函数本身来完成。我如何建立这个?

可以为dbConnection类创建一个prepare方法:

public function prepare($query) {
    return $this->CONN->prepare($query);
}

和您当前的代码将工作。

将自定义函数和系统函数应用到同一个对象是不可能的,所以你必须在自定义对象上镜像系统函数:

class connect{
public $CONN;
function __construct(){
$this->CONN=new mysqli();
}
function prepare($statement){
     $this->CONN->prepare($statement);
 }