我有这个类,将建立一个连接到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);
}