永发信息网

php封装一个class类实现mysql数据库的增删该查

答案:3  悬赏:40  手机版
解决时间 2021-04-04 22:04
php封装一个class类实现mysql数据库的增删该查
最佳答案
class sqlHelper{
public $conn;
public $dbname="数据库名称";
public $username="数据库用户名";
public $password="数据库密码";
public $host="localhost";
//连接数据库
public function __construct(){
$this->conn=mysql_connect($this->host,$this->username,$this->password);
if(!$this->conn){
die("连接失败".mysql_error());
}
mysql_select_db($this->dbname,$this->conn);
}
//执行查询语句
public function execute_dql($sql){
$res=mysql_query($sql,$this->conn);
return $res;
}
//执行增填改语句
public function execute_dml($sql){
$b=mysql_query($sql,$this->conn);
if(!$b){
return 3;
}else{
if(mysql_affected_rows($this->conn)){
return 1;//表示OK
}else{
return 2;//表示没有行收到影响
}
}
}
}
全部回答
class db_mysql
{
var $querynum = 0 ; //当前页面进程查询数据库的次数
var $dblink ; //数据库连接资源

//链接数据库
function connect($dbhost,$dbuser,$dbpw,$dbname='',$dbcharset='utf-8',$pconnect=0 , $h无法链接数据库!");
}

//设置查询字符集
mysql_query("SET character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this->dblink) ;

//选择数据库
$dbname && @mysql_select_db($dbname,$this->dblink) ;
}

//选择数据库
function select_db($dbname)
{
return mysql_select_db($dbname,$this->dblink);
}

//执行SQL查询
function query($sql)
{
$this->querynum++ ;
return mysql_query($sql,$this->dblink) ;
}

//返回最近一次与连接句柄关联的INSERT,UPDATE 或DELETE 查询所影响的记录行数
function affected_rows()
{
return mysql_affected_rows($this->dblink) ;
}

//取得结果集中行的数目,只对select查询的结果集有效
function num_rows($result)
{
return mysql_num_rows($result) ;
}

//获得单格的查询结果
function result($result,$row=0)
{
return mysql_result($result,$row) ;
}

//取得上一步 INSERT 操作产生的 ID,只对表有AUTO_INCREMENT ID的操作有效
function insert_id()
{
return ($id = mysql_insert_id($this->dblink)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
}

//从结果集提取当前行,以数字为key表示的关联数组形式返回
function fetch_row($result)
{
return mysql_fetch_row($result) ;
}

//从结果集提取当前行,以字段名为key表示的关联数组形式返回
function fetch_assoc($result)
{
return mysql_fetch_assoc($result);
}

//从结果集提取当前行,以字段名和数字为key表示的关联数组形式返回
function fetch_array($result)
{
return mysql_fetch_array($result);
}

//关闭链接
function close()
{
return mysql_close($this->dblink) ;
}

//输出简单的错误html提示信息并终止程序
function halt($msg)
{
$message = "\n\n" ;
$message .= "\n" ;
$message .= "\n" ;
$message .= "\n" ;
$message .= "数据库出错:".htmlspecialchars($msg)."\n" ;
$message .= "\n" ;
$message .= "" ;

echo $message ;
exit ;
}
}
class db{
private $db;
const MYSQL_OPT_READ_TIMEOUT = 11;
const MYSQL_OPT_WRITE_TIMEOUT = 12;
private $tbl_name;
private $where;
private $sort;
private $fields;
private $limit;
public static $_instance = null;
function __construct(){
$cfg = loadConfig('db');
$db = mysqli_init();
$db->options(self::MYSQL_OPT_READ_TIMEOUT, 3);
$db->options(self::MYSQL_OPT_WRITE_TIMEOUT, 1);
@$db->real_connect($cfg['host'],$cfg['user'],$cfg['pwd'],$cfg['db']);
if ($db->connect_error) {
$this->crash($db->errno,$db->error);
}
$db->set_charset("utf8");
$this->db = $db;
//echo $this->db->stat;
}
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self();
}
return self::$_instance;
}
private function __clone() {} //覆盖__clone()方法,禁止克隆
public function find($conditions = null){
if($conditions) $this->where($conditions);
return $this->getArray($this->buildSql(),1);
}
public function findAll($conditions = null){
if($conditions) $this->where($conditions);
return $this->getArray($this->buildSql());
}
//表
public function t($table){ $this->tbl_name = $table; return $this;}
//条件
public function where($conditions){
$where = '';
if(is_array($conditions)){
$join = array();
foreach( $conditions as $key => $condition ){
$condition = $this->db->real_escape_string($condition);
$join[] = "`{$key}` = '{$condition}'";
}
$where = "WHERe ".join(" AND ",$join);
}else{
if(null != $conditions) $where = "WHERe ".$conditions;
}
$this->where = $where;
return $this;
}
//排序
public function sort($sort){
if(null != $sort) $sort = "ORDER BY {$sort}";
$this->sort = $sort;
return $this;
}
//字段
public function fields($fields){ $this->fields = $fields; return $this; }
public function limit($limit){$this->limit = $limit; return $this;}
private function buildSql(){
$this->fields = empty($this->fields) ? "*" : $this->fields;
$sql = "SELECt {$this->fields} FROM {$this->tbl_name} {$this->where} {$this->sort}";
accessLog('db_access',$sql);
if(null != $this->limit)$sql .= " limit {$this->limit}";
return $sql;
}

private function getArray($sql,$hasOne = false){
if($this->db->real_query($sql) ){
if ($result = $this->db->use_result()) {
$row = array();
if($hasOne){
$row = $result->fetch_assoc();
}else{
while($d = $result->fetch_assoc()) $row[] = $d;
}
$result->close();
$this->fields = "*";
return $row;
}else{
return false;
}
}else{
if($this->db->error){
$this->crash($this->db->errno,$this->db->error,$sql);
}
}
}
public function findSql($sql,$hasOne = false){
accessLog('db_access',$sql);
if($this->db->real_query($sql) ){
if ($result = $this->db->use_result()) {
$row = array();
if($hasOne){
$row = $result->fetch_assoc();
}else{
while($d = $result->fetch_assoc()) $row[] = $d;
}
$result->close();
$this->fields = "*";
return $row;
}else{
return false;
}
}else{
if($this->db->error){
$this->crash($this->db->errno,$this->db->error,$sql);
}
}
}
public function create($row){
if(!is_array($row))return FALSE;
$row = $this->prepera_format($row);
if(empty($row))return FALSE;
foreach($row as $key => $value){
$cols[] = '`'.$key.'`';
$vals[] = "'".$this->db->real_escape_string($value)."'";
}
$col = implode(',', $cols);
$val = implode(',', $vals);
$sql = "INSERT INTO `{$this->tbl_name}` ({$col}) VALUES ({$val})";
accessLog('db_access',$sql);
if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID
if($this->db->insert_id){
return $this->db->insert_id;
}
if($this->db->affected_rows){
return true;
}
}
return FALSE;
}
//直接执行sql
public function runSql($sql){
accessLog('db_access',$sql);
if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID
return true;
}else{
return false;
}
}
public function update($row){
$where = "";
$row = $this->prepera_format($row);
if(empty($row))return FALSE;
foreach($row as $key => $value){
$value = $this->db->real_escape_string($value);
$vals[] = "`{$key}` = '{$value}'";
}
$values = join(", ",$vals);
$sql = "UPDATE {$this->tbl_name} SET {$values} {$this->where}";
accessLog('db_access',$sql);
if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID
if( $this->db->affected_rows){
return true;
}
}
return false;
}
function delete(){
$sql = "DELETE FROM {$this->tbl_name} {$this->where}";
if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID
if( $this->db->affected_rows){
return true;
}
}
return FALSE;
}
private function prepera_format($rows){
$columns = $this->getArray("DESCRIBE {$this->tbl_name}");
$newcol = array();
foreach( $columns as $col ){
$newcol[$col['Field']] = $col['Field'];
}
return array_intersect_key($rows,$newcol);
}
//崩溃信息
private function crash($number,$message,$sql=''){
$msg = 'Db Error '.$number.':'.$message ;
if(empty($sql)){
echo t('db_crash');
}else{
$msg .= " SQL:".$sql;
echo t('db_query_err');
}
accessLog('db_error',$msg);
exit;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东莞东火车站住宿好还是在南城汽车站住宿好?
刀塔传奇谜语人中吕布马中赤兔打一成语
实验时,小红把生锈的铁钉放入足量的稀硫酸中
澳洲葡萄籽什么牌子好,请问葡萄籽是什么
传销,2016年永州有传销吗?我怀疑我姐现在再做
望奎是在烟台什么方向
西藏拉萨市海拔有多高
汽车轮胎补气就补前两轮胎,后胎不补要不要紧
感慨贫穷的句子,形容贫穷的句子
鲍鱼仔为什么发不透
在哪里能找到性伙伴
汽车在没有踩油门的情况下带速无故提高
Jim and Kate English.A. are good inB. are
想买森林小学的教育房,有没有带指标的楼盘
深海迷航先驱者大炮在哪
推荐资讯
定金怎么做分录,收到定金时会计分录应该怎么
爱心社团宗旨怎么写,想成立一个读书爱好者协
下列关于城市等级的叙述,正确的是A.城市的等
八班班级口号,求关于二十一班的口号!!!急
和七律长征类似的诗词,毛泽东诗词七律长征中
关于冒号的用法,请看下面的句子中冒号是否改
求石柱黄水到重庆汽车的直达车时间表,和电话
2兆线用万用表检测
光耀结晶石对比守护祭坛里刷出来的光强石头哪
有倒腾古玩的吗
造化之天道戒是怎么来的,看到有人带一对,貌
我爱一个人...可是他不理我!别让我放手!我放
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?