PHP入门基础之PHP操作MySQL数据库
1、PHP操作MySQL数据库的三种方式
1.PHP mysql扩展
PHP2.0版本开始引入,仅提供面向过程的接口
通过调用函数实现
例子:
<?php //建立连接 $connection = mysql connect( 'localhost', 'user' , 'password'); //执行SQL语句 $result = mysqL gquery( 'SHO TABLES', $connection); //关闭连接 mysql _close($result) ?>
支持MySQL数据库的基础功能
对MySQL5.1+数据库服务器的新特性支持性差
本扩展自 PHP 5.5.0 起已废弃,并在自 PHP 7.0.0 开始被移除。
2.PHP PDO驱动
PHP5.1版本开始引入,仅提供面向对象的接口
通过调用对象方法实现
<?php //建立连接 $connection = new PDO( mysql:host=localhost;dbname=testdb' , 'user', 'password'); //执行SQL语句 $result = $connection->query( ' SHOW TABLES' ); ?>
无需显示关闭连接,PDO对象回收时会自动关闭连接
支持MySQL数据库的基础功能
对MySQL5.1+数据库服务器的新特性支持性好
官方持续维护、更新,官方推荐使用
支持多种类型的数据库
3.PHP mysqli扩展
https://www.php.net/manual/zh/book.mysqli.php
PHP5.0版本开始引入,提供面向过程和面向对象两种接口
可以通过调用函数、对象方法实现
<?php / ** *面向过程 */ //建立连接 $connection = mysqli_ connect(' Localhost' , ' user', ' password' ); //执行SQL语句 $result = mysqli _query($connection, ' SHOW TABLES ); //关闭连接 mysqli close($connection) ; /** *面向对象 */ //建立连接 $mysqli = new mysqli( ' localhost', 'user' ,' password'); //执行SQL语句 $result = $mysqli >query( 'SHOW TABLES'); //关闭连接 $mysqli- >close(); ?>
完美支持MySQL 5.1+数据库服务器的基础功能和新特性
官方持续维护、更新,官方推荐使用
2、使用mysqli扩展操作MySQL数据库(一)
操作MySQL数据库八步法(八个步骤)
1建立连接
$connection= mysqli_connect('mysql服务器地址','登陆名','登陆密码','需要查询的数据库','端口号')
2判断连接是否成功
mysqli_connect_error()
3选择数据库
mysqli_select_db($connection,'数据库名称')
4设置字符集
mysqli_set_charset($connection,'utf8')
5书写SQL语句
$sql="SELECT *FROM `table_name`"
6执行SQL语气
mysqli_query($connection,$sql);
7解析结果集
第二个参数有三个值 MYSQL_NUM 解析成索引数组 | MYSQLI_ASSOC 解析成关联数组 | MYSQLI_BOTH 关联和索引都有
mysqli_fetch_array($array[,MYSQLI_NUM | MYSQLI_ASSOC | MYSQLI_BOTH])
mysqli_fetch_row($array) 等同于 mysqli_fetch_array($array,MYSQLI_NUM) mysqli_fetch_assoc($array) 等同于 mysqli_fetch_array($array,MYSQLI_ASSOC) mysqli_fetch_object($array) 以对象形式解析 mysqli_fetch_all($array[,MYSQLI_NUM | MYSQLI_ASSOC | MYSQLI_BOTH]) 数组解析成索引形式(第二个参数和mysqli_fetch_array() 一样)
8关闭连接
mysqli_close()
例子:
<?php // 建立连接 $connection= mysqli_connect('127.0.0.1','roots',''); print_r($connection); // 判断连接是否成功 if(mysqli_connect_error() !=null){ die(mysqli_connect_error()); }else{ echo '连接成功!'; } // 选择数据库 mysqli_select_db($connection,'imooc'); // 设置字符集 mysqli_set_charset($connection,'utf8'); // 书写SQL语句 $sql="SELECT *FROM `imooc_user` LIMIT 1"; // 执行SQL语句 $result=mysqli_query($connection,$sql); // 解析结果集析 $arr=mysqli_fetch_array($result,MYSQLI_BOTH); // print_r($arr) // 关闭连接 mysqli_close($connection); print_r($connection); ?>
3、使用mysqli扩展操作MySQL数据库(二)
添加、更新和删除数据
1准备--连接数据库、选择数据库、设置连接字符集
$connection= mysqli_connect('127.0.0.1','roots','');
2执行--书写并执行SQL语句
//如何添加 ,查看 后端入门php基础之MySQL基础
$sql="INSERT imooc_user(id,username,password,email,age,card,tel,salary,married,addr,sex) VALUES(3,'sqy3','12345653','1234567836@QQ.COM','23','513019291832783281','17685405482','45500',0,'四川省',1), (4,'sqy4','12345654','123457834@QQ.COM','23','513019291832783284','17685405222','45500',0,'四川省',1);";
//插入的数据数量 mysqli_affected_rows($connection) //获取上一步插入数据的id mysqli_insert_id($connection) //更新数据 $sql ="UPDATE imooc_user SET password ='password' WHERE id>4"; //删除数据 $sql = "DELETE FROM imooc_user WHERE id>4";
3处理--获取并处理执行结果信息
if($result){ echo '执行成功!成功删除了'.mysqli_affected_rows($connection).'条数据'; }else{ echo '执行失败'; }
示例:
<?php // 建立连接 $connection= mysqli_connect('127.0.0.1','roots',''); // 判断连接是否成功 if(mysqli_connect_error() !=null){ die(mysqli_connect_error()); }else{ echo '连接成功!'; } // 选择数据库 mysqli_select_db($connection,'imooc'); // 设置字符集 mysqli_set_charset($connection,'utf8'); // 书写SQL语句 // $sql="INSERT imooc_user(id,username,password,email,age,card,tel,salary,married,addr,sex) // VALUES(3,'sqy3','12345653','1234567836@QQ.COM','23','513019291832783281','17685405482','45500',0,'四川省',1), // (4,'sqy4','12345654','123457834@QQ.COM','23','513019291832783284','17685405222','45500',0,'四川省',1);"; // $sql ="UPDATE imooc_user SET password ='password' WHERE id>2"; $sql = "DELETE FROM imooc_user WHERE id>3"; // 执行SQL语句 $result=mysqli_query($connection,$sql); // 解析结果集析 // $arr=mysqli_fetch_array($result,MYSQLI_BOTH); // print_r($arr) if($result){ echo '执行成功!成功删除了'.mysqli_affected_rows($connection).'条数据'; }else{ echo '执行失败'; } // 关闭连接 mysqli_close($connection); ?>
4、使用mysqli扩展操作MySQL数据库(三)
简单查询并结果解析
1.查询多条数据并循环显示
$sql ="SELECT good,class,price,stock FROM good WHERE id<4"; $result = mysqli_query($link.$sql); if($result){ echo "<pre>"; while($row = mysqli_fetch_array($result)){ var_dump($row); } }else{ echo "执行失败!"; }
mysqli_num_rows()查询获取到的行数
mysqli_num_fields()查询获取到的列数
复杂条件查询
SELECT *FROM table_name 查表
SELECT *FROM table_name WHERE $class1 >= $values AND $class1 <= $values
根据某种规则筛选表数据
$class1 NOT IN ($value1,$value2,$value3)
筛选$class1等于$value1 和 $class1等于$value2 、$class1等于$value3 的数据
GROUP BY $class1
根据$class1分组排序
ORDER BY $class1
根据$class1排序
LIMIT $num
一页$num条数据
多表联查
5、使用mysqli扩展操作MySQL数据库
1可能错误的原因
SQL语句语法错误
数据类型错误
唯一索引列数据重复
其他错误
2程序错误排查
判断SQL语句的执行结果
查看数据影响条数
获取SQL语句执行的错误信息
修正错误并重新执行