php mysqli 预处理 怎么绑定参数

php mysqli 预处理 怎么绑定参数,第1张

<?php

/* 连接数据库类 MysqlConnect */

class MysqlConnect{

private $dbhost=null

private $dbuser=null

private $dbpwd=null

private $dbname=null

private $dbport=null

private $ifpdo=null

private $dburi=null

private $handler=null

function __construct($dbhost,$dbuser,$dbpwd,$dbname,$dbport,$ifpdo,$dburi){

$this->dbhost=$dbhost

$this->dbuser=$dbuser

$this->dbpwd=$dbpwd

$this->dbname=$dbname

$this->dbport=$dbport

$this->ifpdo=$ifpdo

$this->dburi=$dburi//PDO的URI参数,可以查手册

if($this->ifpdo==1){//表示调用PDO来 *** 作数据库

$this->handler=$this->CreatePdo()

}elseif($this->ifpdo==0){//这里可以写MYSQLI的方法

$this->handler=null

}

}

/* ----------------这里是入口--------------------- */

//@param sql:外部调用时传递的完整SQL语句

//@param bindArray:绑定的参数数组,与sql语句有关,如果没有PDO占位符此处为空

//@param action:传递 *** 作参数,"select"/"update"/"delete"/"insert"

public function exeSql($sql,$bindArray=array(),$action=""){

$stmt=$this->handler->prepare($sql)

$stmt->execute($bindArray)

switch($action){

case "select":

return $stmt->fetch(PDO::FETCH_ASSOC)

break

case "selectAll":

return $stmt->fetchAll(PDO::FETCH_ASSOC)

break

case "update":

case "delete":

return $stmt->rowCount()

break

case "insert":

return $this->handler->lastInsertId()

break

case "count":

return $stmt->rowCount()

default:

return ""

}

}

public function query($sql){

return $this->handler->query($sql)

}

private function CreatePdo(){

try{

$handler=new PDO($this->dburi,$this->dbuser,$this->dbpwd)

$handler->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)

return $handler

}catch(PDOException $e){

$e->getMessage()

$this->handler=null

}

}

private function __get($args){

if($args=='handler'){

return $this->handler

}

}

}

require(NEO_A_P.'\data\sqlconfig.php')//这里是sql的连接文件,下面创建对象的时候需要的变量就是这个文件里要有的

$handler=new MysqlConnect($dbhost,$dbuser,$dbpwd,$dbname,$dbport,$ifpdo,$dburi)

?>

为了设置合理的MySQL参数,需要根据实际情况和使用场景来进行调整。通常而言,你应该关注以下几个方面:

连接数量: 在MySQL中有一个max_connections参数,用于限制MySQL服务器能够同时支持的客户端连接数。

数据库缓存: MySQL有一个query_cache参数,用于设置查询结果的缓存大小,以便加快对相同SQL语句的多次执行。

数据库日志: MySQL有一个log_error参数,用于设置日志文件的位置和大小,以便更好地监控MySQL的运行情况。

NineData是一款非常有特色的数据库SQL开发产品,对MySQL常用功能支持非常完整,包括智能的SQL补全、SQL执行历史、结果集编辑、数据对比、结构对比、数据迁移与复制等。它采用SaaS架构模式,用户不仅可以免费使用,而且无需下载安装,上手比较简单。NineData产品更新迭代比较敏捷,对于开发者的新需求响应比较迅速。另外,该产品在多云适配上是其重要的强项,支持多种连接和访问云数据库的方式,对阿里云、腾讯云、华为云、AWS等都有比较好的支持。另外,也适配国内比较流行的PolarDB、GaussDB、TDSQL等数据库。

对于新用户NineData还会赠送两个示例数据库,供用户使用。另外,NineData还提供了企业级SQL开发能力,支持多用户管理、数据库访问权限控制、变更流程、SQL规范、SQL与 *** 作审计等内容,可以较好的解决企业内多人协作访问数据库的问题。

这样绑定不对,你穿进去的是带""的,你得稍微改下逻辑了应该改为

String sql="select * from book where name like '%"+value1+"%' or author like'%"+value2+"%'"

这样拼接没问题,传进来的参数可以直接放进去,我记得原来写的时候,like里面有问号,传入字符串会出错,逻辑你想想稍微改一下,难度不大


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6127665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存