好的,我到处寻找答案,但不是任何真正的答案,我认为这对于那里的任何人来说都是一个不错的要求:
我的班级成员函数使用 mysqli 的“mysqli_query”成员函数:
class mysqlidbconn extends mysqli {
protected $conn; //Or private $conn;
function dbconnect(){
$localHost = false;
$link = new mysqli("server","database username","password","databasename")
or ($die = true);
if ($link->connect_error){
die("Database selection failed: " . $link->connect_error);
}else{
$this->conn = $link;
}
}
以及用于执行插入/更新/删除/截断查询的成员函数:
// To Execute Sql Query with no return result
function xQuery($sql) {
$this->conn->query($sql) or die("MySQL Query Execute Error: " .
$this->invDBConn->errorno . "<br>" . $this->conn->error . "<br>" . $sql
. "<br>");
}
在对表进行插入和截断时,上述情况完美适用于将 $conn 初始化为类 mysqlidbconn 的 PRIVATE 或 PROTECTED 成员变量,如下面代码中使用 mysqlidbconn 类的示例,不会产生错误,但也不会更新发生在 mysql 表中:
<?php
require('path to php file containing mysqlidbconn class');
$msqli = new mysqlidbconn;
$msqli->dbconnect();
//This works
$sqlinsert = "insert into foo (foo_id, foo_field1...) values ('foo_id value',
'foo_field1 value',...);
$msqli->xQuery($sqlinsert);
//As does this
$sqltruncate = "truncate foo";
$msqli->xQuery($sqltruncate);
//But the below does not work, giving no error, result, etc.
$sqlupdate = "update foo set foo_field1='another foo_field1 value'";
$msqli->xQuery($sqlupdate);
但是,当使用 $conn 变量作为 PUBLIC 编写类时,上述
$sqlupdate = "update foo set foo_field1='another foo_field1 value'";
$msqli->xQuery($sqlupdate);
成功更新表。
在编写我的 mysqlidbconn 类时,我在 OOP 方面丢失了什么?
感谢您的帮助,对于未根据论坛规则发布的任何代码,我深表歉意。