[英]PHP OOP with mysqli class
好的,我到处都在搜索答案,但是我发现这个答案比任何真正的答案都合适,因为它是对任何人的不错要求:
我的类的成员函数使用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类时我不见了,这是怎么回事?
感谢您的帮助,对于根据论坛规则未发布的任何代码,我深表歉意。
尝试:
$link = new mysqli("server","database username","password","databasename") or
($die = true);
// To Execute Sql Query with no return result
function xQuery($sql) {
$result = $this->conn->query($sql);
if(!empty($result))
{
return $result->fetch_assoc();
} else {
return $this->conn->errno;
}
}
没有面向对象的方法,问题也不是真正的问题,因为它仅是由测量误差引起的,就像这里有成千上万的问题一样。
没有任何与OOP相关的东西可以干预SQL,从而使某些查询运行,而有些则无法运行。 是的,许多PHP用户在更新查询,更新已更新的数据或检查错误数据库等结果时遇到困难。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.