【PHP基础知识】——数据库MySQL操作(上)

来源:互联网 发布:mac系统 ps 编辑:程序博客网 时间:2024/05/22 05:13

一、前言 

MySQL数据库是基于Linux操作系统的开发出来的数据库,因为Linux是开源代码,MySQL也是免费开源码的数据库。其支持多种语言连接,能满足中小型企业对数据库的需求,使得其能在数据库界占有一席之地。MySQL+PHP组成的最佳搭档,是目前最为成熟、稳定、安全的企业级WEB开发技术,广泛应用于大型站点。其成熟的架构、稳定的性能、嵌入式开发方式、简洁的语法,使得系统能迅速开发。

今天我们就来捋一捋PHP操作MySQL的一些知识与方法的总结。


二、Linux下PHP支持数据库操作的配置

1、安装好MySQL数据库,可在官网下载(https://www.mysql.com/cn/downloads/),按网上大多数的教程安装(一般按经典配置安装即可)。
2、安装PHP支持MySQL:
①未安装PHP情况:下载源码包编译安装PHP时在安装配置参数./configure后面加上

--with-mysql=<MySQL头文件路径> --with-zlib-dir=<MySQL库文件路径> 编译安装即可;


②已安装PHP情况:可以去MySQL官网或者其他网站上下载到PHP的MySQL扩展,解压并把扩展放入php根目录的extension目录下:mysql.so或mysqli.so
并在PHP.ini配置支持扩展即可:
extension=mysql.so
extension=mysqli.so

3、配置完成后可以在phpinfos()里面看到mysql的支持已经启用。


注:推荐使用mysqli,mysql扩展已经在PHP5.5及以上版本中过期废弃。

三、PHP操作数据库的方法

1、连接数据库:
①$conn=new mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);  

成功返回资源类型的句柄,失败返回false;

②也可以使用面向过程的方式连接,对应函数为:mysqli_connect():
$conn=mysqli_connect($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);

2、设置字符编码格式:mysqli_set_charset()方法:mysqli_set_charset($conn,$dbConf['charSet']);

3、选择或改变执行操作的数据库:mysqli::select_db()方法

4、数据查询操作:
①直接查询方式:mysqli::query()方法;
②预处理方式(推荐):步骤:$sql='SELECT * from `t1` as t WHERE id2>?';
通过prepare方法预处理sql语句:$stmt=$conn->prepare($sql);如果返回值时false则说明语句有问题;
绑定参数预处理语句需查询传入的参数:bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
$stmt->bind_param('i',$value);//i表示int型,$value必须是变量类型,可在接下来为其赋值;
$value = 2; //赋值
$stmt->execute();  //执行  
$stmt->bind_result($id1, $id2);  //将结果绑定发到指定的参数上  

注:建议通过第二种(预处理方式)进行操作,php的MySQL预处理语句可以过滤掉很多外部输入的不可信任的变量和注入攻击。

5、数据库查询结果常用格式化方式:
①mysqli_stmt::bind_result()——将查询的字段结果以数组形式绑定在n个参数变量上(n为查询语句的返回字段数);
②mysqli_result::fetch_array(<返回类型>)——按照返回类型每次返回key=>value格式的数组(返回类型有MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH.分别表示key是数字索引、数据库字段索引和两者皆返回);
③mysqli_result::fetch_assoc()——等同于mysqli_result::fetch_array(MYSQLI_ASSOC),返回字段索引;
④mysqli_result::fetch_row()——等同于mysqli_result::fetch_array(MYSQLI_NUM),返回数字索引;
⑤mysqli_result::fetch_object()——每次返回一条对象类型的查询结果;
⑥mysqli_result::$field_count()——返回执行的结果条数;

6、数据库插入和更新操作:
$sql = "insert into table user(id,name) values(?,?)";//或者执行update语句
$stmt = $mysqli->prepare($sql);//同样采用预处理语句处理
$id=null;//数据库设置是primary key auto_increment
$name='tester';
$stmt->bind_param("is",$id,$name); //绑定参数(需要插入的数据),并执行。"is"按顺序代表插入数据的数据类型;
$res = $stmt->execute();//执行语句,返回值为布尔类型

7、返回插入或更新后的最新id:
mysqli_stmt::$insert_id()——用于插入的时候返回最新id;
mysqli_stmt::$affected_rows()——用于更新后返回影响行数;

8、关闭数据库连接的操作流程:
$stmt->free_result();//释放结果    
$stmt->close();//关闭预编译的指令.    
$conn->close();//关闭连接    
虽然PHP也有垃圾回收机制,但是习惯手动释放资源和内存会更保险。

9、其他操作
PHP同样可以支持MySQL数据库的事务操作:
①mysqli::autocommit()——开启或关闭数据库自动提交事务的方法;
②mysqli::commit()——手动提交一个事务的方法;
③mysqli::rollback()——回滚一个当前事务;

10、错误类函数:
①mysqli::$connect_errno()——连接错误码;
②mysqli::$connect_error()——连接错误信息;
③mysqli::$error()——返回最近的一次错误信息;
④mysqli::errno()——返回最近一次错误码;


四、其他常用方法介绍



后续再详谈另外一种数据库连接方式,即PHP的PDO连接数据库方式。