一.mysqli扩展的介绍
1.mysqli扩展和mysql扩展都可以完成对数据库的操作
2.mysqli是mysql的升级版
3.mysqli支持面向对象,也支持面向过程;mysql扩展只支持面向过程,从而mysql扩展到目前为止已经被弃用
4.使用mysqli的扩展前,需要引入一个php_mysqli.dll,该文件在php的安装目录,在 ~/php/ext/php_mysqli.dll。
二.mysqli扩展的原理图
三.如何使用
(1)DQL
1 <?php 2 header('content-type:text/html;charset=utf8'); 3 /* 4 参数名就不多说了应该都能看懂 5 */ 6 $mySQLi=new mySQLi('localhost','root','root','itbull',3306); 7 //判断是否连接成功 没有错误返回0 有错误返回错误信息 8 if($mySQLi->connect_errno){ 9 die('连接错误,错误信息是:'.$mySQLi->connect_error); 10 }else{ 11 echo '连接成功'; 12 } 13 //设置字符集 14 $mySQLi->set_charset('utf8'); 15 //拼接sql语句 16 $sql="SELECT * FROM `user3`"; 17 //执行sql语句 18 $res=$mySQLi->query($sql); 19 /*echo '<pre>'; 20 var_dump($res);*/ 21 //显示数据的时候用$res来循环取出 22 while($row=$res->fetch_assoc()){ 23 echo '<pre>'; 24 var_dump($row); 25 } 26 //关闭相关资源 不手动关闭 系统也会自动关闭 27 //释放结果集 28 $res->free(); 29 //关闭连接 30 $mySQLi->close(); 31 32 33 34 ?>
(2)DML
1 <?php 2 3 header('content-type:text/html;charset=utf8'); 4 /* 5 参数名就不多说了应该都能看懂 6 */ 7 $mySQLi=new mySQLi('localhost','root','root','itbull',3306); 8 //判断是否连接成功 没有错误返回0 有错误返回错误信息 9 if($mySQLi->connect_errno){ 10 die('连接错误,错误信息是:'.$mySQLi->connect_error); 11 }else{ 12 echo '连接成功','<br>'; 13 } 14 //设置字符集 15 $mySQLi->set_charset('utf8'); 16 17 $sql="INSERT INTO `user3` VALUES(null,'王五',md5('456'),'ww@sohu.com','2017-10-1')"; 18 19 $sql="UPDATE `user3` SET name='王五五' WHERE id=3"; 20 21 $sql="DELETE FROM `user3` WHERE id=3"; 22 //dml语句 成功返回true 失败返回false 23 if($mySQLi->query($sql)){ 24 echo '执行成功','<br>'; 25 }else{ 26 echo "执行失败,sql语句是:".$sql,'<br>'; 27 echo "失败的原因是:".$mySQLi->error,'<br>'; 28 }
1 //判断dml语句是否影响了表 2 if($mySQLi->affected_rows>0){ 3 echo '<br> 改变了表'; 4 }else{ 5 echo '<br> 表没有改变'; 6 } 7 8 //获取刚刚得到的id 9 echo "<br> id=".$mySQLi->insert_id;
(3)从mysql_result中取出数据的方式有四种,推荐使用第一种,$res->data_seek(0)是将结果指向为0
1 while($row=$res->fetch_assoc()){ 2 echo '<pre>'; 3 var_dump($row); 4 } 5 6 $res->data_seek(0);//结果指向设置为0 7 while($row=$res->fetch_row()){ 8 echo '<pre>'; 9 var_dump($row); 10 } 11 12 $res->data_seek(0); 13 while($row=$res->fetch_array()){ 14 echo '<pre>'; 15 var_dump($row); 16 } 17 18 $res->data_seek(0); 19 while($row=$res->fetch_object()){ 20 echo '<pre>'; 21 var_dump($row); 22 echo '电子邮件:'.$row->email; 23 }