1, Java有一种方式操作数据库, PHP有三种方式来操作mysql数据库。(1)mysql扩展库;(2)mysqli扩展库;(3)pdo;
2, mysql扩展库和mysql数据库区别
3, mysql数据库的三层结构示意图
4, mysql扩展库是一堆函数,是PHP设计者提供给程序员用于完成对mysql数据库的各种操作(CRUD)。使用php的mysql扩展库完成对mysql操作的案例:编写一个程序,这个程序从user1表中读取数据,并打印在网页中。
(1)环境搭建
①启用mysql扩展库,在php.ini文件中配置mysql扩展库,extension=php_mysql.dll。可以通过<?php phpinfo(); ?>查看当前php支持什么扩展库。
② 创建一张用户表,表中插入数据,供程序使用。
(2)编写php程序,完成对用户表的显示。
//mysql扩展库操作mysql数据库步骤如下 //1.获取连接 $conn = mysql_connect("127.0.0.1","root","123456"); if(!$conn){ die("连接失败".mysql_error()); } //2.选择数据库 mysql_select_db("test",$conn) or die(mysql_error()); //3.设置操作编码(建议有) mysql_query("set names utf-8"); //4.发送指令sql(ddl数据定义语言,比如创建表,dml数据操作语言,是insert、update、delete,dql数据查询语言,是select,dtl数据事务语句,比如rollback commit..) $sql = "select * from user1"; $res = mysql_query($sql,$conn); if(!$res){ echo "操作失败".mysql_error(); } //5.接收返回的结果,并处理 while($row = mysql_fetch_row($res)){ var_dump($row); } //6.释放资源,关闭连接 mysql_free_result($res); //这句话没有也可以,推荐有这个 mysql_close($conn);
5, 细节
(1)使用完$res结果集后,一定及时的释放资源。
(2)如果没有mysql_close(),系统也会自动关闭。
(3)执行完$res = mysql_query($sql, $conn);,直接关闭连接mysql_close($conn);,对程序没有影响,这是因为$res指向内存中相应资源(数据库数据导入内存),不需要数据库。这和java不一样的。
(4)从$res获取行数据的时候,除了mysql_fetch_row($res),还有三个方法,分别是:
① mysql_fetch_row($res),返回一个索引的数组;
② mysql_fetch_assoc($res),返回一个关联数组;
③ mysql_fetch_array($res),返回索引数组和关联数组(两套);
④ mysql_fetch_object($res),把一行数据,当作一个对象返回
6,对数据库进行增删改时候,流程和查询一样,使用$res = mysql_execute($sql,$conn);,只需改变$sql语句即可。
//mysql扩展库操作mysql数据库步骤如下 //1.获取连接 $conn = mysql_connect("127.0.0.1","root","123456"); if(!$conn){ die("连接失败".mysql_error()); } //2.选择数据库 mysql_select_db("test",$conn) or die(mysql_error()); //3.设置操作编码(建议有) mysql_query("set names utf-8"); //4.发送指令sql(ddl数据定义语言,比如创建表,dml数据操作语言,是insert、update、delete,dql数据查询语言,是select,dtl数据事务语句,比如rollback commit..) $sql = "insert into user1(name,password,email,age) VALUES('小花',md5('123456'),'757433893@qq.com',24)"; //$sql = "update user1 set name= '小兰',password=md5('000000'),email='757433084@qq.com',age=25 where id = 4 "; //$sql = "delete from user1 where id = 4 "; $res = mysql_query($sql,$conn); if(!$res){ echo "操作失败".mysql_error(); } if(mysql_affected_rows($conn) > 0){ echo "操作成功"; }else{ echo "数据表没有变化"; } //5.接收返回的结果,并处理 //这句话没有也可以,推荐有这个 mysql_close($conn);