Php 准备语句的MySQLi包装器
很长一段时间以来,我一直在为我的数据库函数使用包装器类。几年前,我将其升级为使用Php 准备语句的MySQLi包装器,php,mysqli,Php,Mysqli,很长一段时间以来,我一直在为我的数据库函数使用包装器类。几年前,我将其升级为使用mysqli,而不是折旧后的mysql函数,这使得该网站在升级PHP版本时完全违反了标准 在最近对包装器进行升级后,我编写了一个类,用于从mulit数组中执行准备好的statemtnts,以帮助保持整洁 我就是这样做的 index.php-测试文件 /* Set Parameters i - integer d - double s - string b - BLOB */ $pa
mysqli
,而不是折旧后的mysql
函数,这使得该网站在升级PHP版本时完全违反了标准
在最近对包装器进行升级后,我编写了一个类,用于从mulit数组中执行准备好的statemtnts,以帮助保持整洁
我就是这样做的
index.php-测试文件
/* Set Parameters
i - integer
d - double
s - string
b - BLOB
*/
$params = array(
array('s' => $_GET["id"]),
array('i' => $_GET["two"])
);
$db->prepare("INSERT INTO `".$db->prefix."articles` SET `categoryID`= ? , `articleID`= ? ");
$select2 = $db->execute($params);
$db->close();
您还可以使用不同的数据集重置$params
数组,然后再次$db->execute($params)
插入另一行
database.class.php
function prepare($sql) {
$this->last_query = $sql; //Save query to show later on.
$this->stmt = $this->conn->prepare($sql);
}
function close() {
$this->stmt->close();
}
function execute($params) {
$ident = '';
$parameters = '';
$vars = array();
if($this->stmt) {
foreach($params as $k => $v) {
foreach($v as $a => $b) {
$ident .= $a;
$vars[] .= $b;
$parameters .= $a.' => '.$b.'<br>'; // For MySQL error reporting
}
}
$this->stmt->bind_param( $ident , ...$vars );
$this->parameters = $parameters;
$this->stmt->execute();
$result = $this->stmt->get_result();
return $result;
}
else {
if($this->conn->error) {
$this->last_error = $this->conn->error;
$sql = trim(preg_replace('/\s+/', ' ', $sql));
$this->log_error("MySQL",$this->last_error." ☼ ".$sql);
}
}
//$data = $result->fetch_all();
}
函数准备($sql){
$this->last_query=$sql;//保存查询以稍后显示。
$this->stmt=$this->conn->prepare($sql);
}
函数关闭(){
$this->stmt->close();
}
函数执行($params){
$ident='';
$parameters='';
$vars=array();
如果($this->stmt){
foreach($k=>v的参数){
foreach($v为$a=>$b){
$ident.=$a;
$vars[].=$b;
$parameters.=$a.=>'.$b.
';//用于MySQL错误报告
}
}
$this->stmt->bind_参数($ident,$vars);
$this->parameters=$parameters;
$this->stmt->execute();
$result=$this->stmt->get_result();
返回$result;
}
否则{
如果($this->conn->error){
$this->last_error=$this->conn->error;
$sql=trim(preg_replace('/\s+/',''$sql));
$this->log_error(“MySQL”,$this->last_error。“☼ ".$sql);
}
}
//$data=$result->fetch_all();
}
我的问题是:
我工作的网站都将运行PHP7.0(或至少PHP5.7,直到我可以升级到新版本)。放慢速度…从什么开始?与什么相比?“整洁”、“更好”、“很好”、“完全有条理”“所有情绪化的、主观的、没有明确要求的术语我认为这应该转移到代码审查。它看起来不错,但我会摆脱所有这些错误报告。启用MySQLi异常对您来说应该足够了。这个问题可能会在这里结束,但如果您将其发布在coderevew@stackexchange. 虽然我已经有了。此功能可以简化得多: