首页 > 数据库 >简单的php连接mysql类

简单的php连接mysql类

时间:2024-08-19 13:48:33浏览次数:10  
标签:function return val 数据库 mysql db sql php 连接

<?php
class DB{ private $hostname; //数据库主机 private $dbname; //数据库 private $username; //数据库用户名 private $password; //数据库密码 private $port; //数据库端口 public $db; //连接后的数据库对象 //构造函数 public function __construct() { $this->hostname = 'localhost'; $this->username = 'root'; $this->password = ''; $this->port = ''; $this->dbname = 'user'; $this->connect(); POST_SAFE_CHECK(); } //连接数据库 public function connect(){ $hostname = $this->hostname; if($this->port){ $hostname = $this->hostname . ':' . $this->port; }
$this->db = mysqli_connect($hostname, $this->username, $this->password, $this->dbname); if(!$this->db){ die('连接数据库失败!:' . mysqli_connect_error()); }
mysqli_set_charset('utf8'); } //更改数据库 public function dbChange($db){ $this->db = $db; $this->connect(); } //关闭连接 public function dbClose(){ mysqli_close($this->db); } //执行查询 public function execute_query($db='', $sql=''){ if(!$db){ return('无效的数据库!'); } if(!$sql){ return('无效的查询语句!'); }
$this->dbChange($db);
$res = mysqli_query($this->db, $sql); $row = mysqli_fetch_assoc($res); $data = mysqli_fetch_all($res);
$jsonData = array();
for($a=0; $a<count($data); $a++){ if(!$data[$a]){ continue; } $col = array(); $i = 0; foreach($row as $k => $v){ $col[$k] = $data[$a][$i]; $i++; } array_push($jsonData, $col); }
$this->dbClose();
return json_encode($jsonData); } //执行添加、修改、删除 public function execute_modify($db='', $sql=''){ if(!$db){ return('无效的数据库!'); } if(!$sql){ return('无效的查询语句!'); }
$this->dbChange($db);
$res = mysqli_query($this->db, $sql);
if($res){ return 'success'; } else{ return 'error'; } } } //验证post传参合法性 function POST_SAFE_CHECK(){ foreach($_POST as $key => $value){ $_POST[$key] = remove_post($_POST[$key], $_SERVER['PHP_SELF']); } }
function remove_post($val, $url){ $val = remove_xss($val); inject_check($val, $url); return $val; }
function remove_xss($val){ $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val); $search = 'abcdefghijklmnopqrstuvwxyz'; $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $search .= '1234567890!@#$%^&*()'; $search .= '~`";:?+/={}[]-_|\'\\';   for($i=0; $i<strlen($search); $i++){ $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).':?)/i', $search[$i], $val); $val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); }
$ra1 = array('javascript','vbscript','expression','applet','meta','xml','blink','link','style','script','embed','object','iframe','frame','frameset','ilayer','layer','bgsound','title','base'); $ra2 = array('onabort','onactivate','onafterprint','onafterupdate','onbeforeactivate','onbeforecopy','onbeforecut','onbeforedeactivate','onbeforeeditfocus','onbeforepaste','onbeforeprint','onbeforeunload','onbeforeupdate','onblur','onbounce','oncellchange','onchange','onclick','oncontextmenu','oncontrolselect','oncopy','oncut','ondataavailable','ondatasetchanged','ondatasetcomplete','ondblclick','ondeactivate','ondrag','ondragend','ondragenter','ondragleave','ondragover','ondragstart','ondrop','onerror','onerrorupdate','onfilterchange','onfinish','onfocus','onfocusin','onfocusout','onhelp','onkeydown','onkeypress','onkeyup','onlayoutcomplete','onload','onlosecapture','onmousedown','onmouseenter','onmouseleave','onmousemove','onmouseout','onmouseover','onmouseup','onmousewheel','onmove','onmoveend','onmovestart','onpaste','onpropertychange','onreadystatechange','onreset','onresize','onresizeend','onresizestart','onrowenter','onrowexit','onrowsdelete','onrowsinserted','onscroll','onselect','onselectionchange','onselectstart','onstart','onstop','onsubmit','onunload'); $ra = array_merge($ra1 , $ra2);
$found = true;
while($found == true){ $val_before = $val; for($i=0; $i<count($ra); $i++){ $pattern = '/'; for($j=0; $j<strlen($ra[$i]); $j++){ if($j>0){ $pattern .= '('; $pattern .= '(&#[xX]0{0,8}(9ab);)'; $pattern .= '|'; $pattern .= '|(&#0{0,8}([9|10|13]);)'; $pattern .= ')*'; } $pattern .= $ra[$i][$j]; } $pattern .= '/i'; $replacement = substr($ra[$i], 0, 2) . '<x>' . substr($a[$i], 2); $val = preg_replace($pattern, $replacement, $val);
if($val_before == $val){ $found = false; } } }
return $val; } //检测sql注入 function inject_check($sql, $url){ preg_match('/select|insert|update|delete|\'|"|union|into|load_file|outfile|0x|%20|%25| or | |<|>|\)|\(|\*|\||&|;|\$|%|\@|\+|CR|LF|,|script|document|eval|window|=/', $sql, $check);
if($check){ echo "<script>alert('存在非法字符!');window.location='".$url."'</script>"; exit(0); } else{ return true; } }
?>   使用   <?php
include('DB.php');
$sql = 'select * from users;'; $dbname = 'user';
$DB = new DB();
$res = $DB->execute_query($dbname, $sql);
var_dump($res);
?>

标签:function,return,val,数据库,mysql,db,sql,php,连接
From: https://www.cnblogs.com/xwenbin/p/18367155

相关文章

  • MySQL 安装与配置教程:单机、主从复制与集群模式
    目录MySQL简介MySQL安装MySQL基础配置MySQL主从复制配置MySQL集群配置总结1.MySQL简介MySQL是一个广泛使用的关系型数据库管理系统,具有高性能、高可靠性和易用性等特点。它支持多种部署模式,包括单机模式、主从复制模式(用于高可用性和读写分离)以及集群模式(用于分......
  • mysql相关命令学习
    查看mysql服务是否启动service mysql status Windows下通过任务管理器即可查看启动mysql服务service mysql start登录Mysqlmima #查看用户密码可以看到两个用户一个是root一个是admin,然后还有登录密码。启动:mysql -u用户名 -p密码mysql -u用户名......
  • 使用duckdb加载mysql
    安装duckdbhttps://duckdb.org/docs/installation/index加载mysql扩展https://duckdb.org/docs/extensions/mysql.html离线安装的话,可以等INSTALLmysql;超时后,根据它提示的URL到有网环境下载,再传到服务器挂载Nginx,修改/etc/hosts指向,再重新执行INSTALL。Demo代码如下:import......
  • MySQL中的char与varchar
    MySQL中的char与varcharchar类型为固定长度的字符串varchar类型是长度可变的字符串char为固定长度的字符串意思是当我们设置一个字段类型为char时,指定char(100),在计算机底层就会分配足够存储这100个字符的空间。那怕我们使用的长度不够100,剩余的空间在存储时将会被填充以空......
  • ElasticSearch IK分词器的MySQL热部署字典(Docker)
    1.下载插件源码找到自己对应ES版本的下载Releases·infinilabs/analysis-ik·GitHub2.添加mysql驱动依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.......
  • .MySQL数据库主从复制
    数据库主从复制Mysql的主从架构模式,是很多企业⼴泛使⽤,并且是⼴为熟知的⼀种架构模式,这是DBA所应该熟练掌握的技能。1.mysql主从复制主要⽤途a.⽤于备份,避免影响业务b.实时灾备,⽤于故障切换c.读写分离,提供查询服务2.mysql主从复制存在的问题a.主库宕机后,数据可能丢失......
  • 记 Druid 连接池配置不当引发的服务卡慢宕机问题
    背景单体服务部署到Tomcat之后,运行一段时间,出现系统响应超时的情况。重启服务后正常,一段时间后重新出现。排查查看CPU信息发现正常,打开jvisualvm,发现线程数持续上升,且没有下降趋势,此时初步判断系统在某个地方卡住了,请求进来后处理任务的线程都处于等待状态。在jvisualvm......
  • (免费源码)计算机毕业设计必看必学 php 酒店预约管理系统-92767-原创定制程序 java、PHP
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,酒店预约管理系统当然也不能排除在外。酒店预约管理系统是以实际运用为开发背景,运用软件工程开发方法,采用Thinkphp技术构建的一个管理系统。整个开发过程首......
  • 计算机毕业设计必看必学! ! 94755 spring boot高校毕业生就业信息管理系统,原创定制程
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对高校毕业生就业信息管理系统等问题,对高校毕业生就业信息管理系统进行研究分析,然后开发设计......
  • MySQL 组复制故障恢复的有效策略
    没有MGR环境,只是学学别人经验。原文地址:https://www.percona.com/blog/effective-strategies-for-recovering-mysql-group-replication-from-failures/ 组复制是一种容错/高可用复制拓扑结构,可确保在主节点宕机时,由其他候选成员或辅助成员之一接管,从而使写入和读取操作不间断......