边记边学PHP-(十七)PHP使用MySQLi扩展库操作数据库1

来源:互联网 发布:java构造函数是什么 编辑:程序博客网 时间:2024/05/16 19:42

上一篇写了使用MySQL扩展库操作数据库,但是MySQL扩展库是完全面向过程的库,与现在逐渐走上舞台的面向对象思想有点差别。那么MySQLi扩展库就很好的解决了这个问题。

一、MySQLi扩展库是什么

mysqli(mysql improve)是mysql扩展库的增强版。

mysql扩展库 和mysqli扩展库的比较:
1.mysqli的稳定性、安全性和效率有所提高
2.mysqli支持面向对象编程,以前的mysql是面向过程的。同时mysqli扩展库考虑到PHP老程序员,也提供了面向过程的风格
mysqli 有两套编程风格,比如:


    这里只是其中一个例子,他的每个函数都会有对应的。但是使用mysqli一般使用面向对象。

二、代码说明一切

1、面向对象编程

<?php     //1.创建mysqli对象,第一个参数为服务器名,第二个为用户名,第三个是密码,第四个是要连接的数据库,可以看到这里直接连接到了数据库,不用自己重新选择     $mysqli = new MySQLi("localhost","root","root","test");     //验证是否ok     if($mysqli->connect_error){//connect_error是MySQLi类里面的一个属性,记录了连接数据库失败的信息,如果成功则为null。          die("连接失败".$mysqli->connect_error);     }     //如果是面向对象的话,应该马上想到所有的方法都要去通过对象去使用,查找这个对象里面的方法     //2.操作数据库(发送sql语句指令)     $sql = "select * from tb_student";     $res = $mysqli->query($sql);  //失败时返回 FALSE ,通过 query()  成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回 TRUE 。     //$res 是一个结果集,这里是mysqli result,可以通过var_dump()函数来看类型     //var_dump($res);     //3.处理结果     //fetch_row对应以前的mysql_fetch_row()     while($row = $res->fetch_row()){          foreach($row as $key=>$val){               echo "$val--";          }          echo "<br>";     }     //4.关闭资源     //释放内存     //使用的是mysqli result里面的方法     $res->free();     //关闭连接,使用的是mysqli里面的方法     $mysqli->close();?>
通过上面可以看到面向对象的使用中,是从声明一个mysqli对象开始的,所有调用的属性或者方法都是用->来调用。mysqli类提供了大量的封装好的方法,这里可以查手册使用,真的特别方便。

2、面向过程编程

除了面向对象,mysqli也提供了面向过程的方法,并且可以混合使用。
<?php     //1.得到mysqli连接,因为面向过程,直接得到连接,参数含义与上面面向对象一样     $mysqli = mysqli_connect("localhost","root","root","test");     if(!$mysqli){          die("连接失败".mysqli_connect_error($mysqli));     }     //2.向数据库发送sql语句     $sql = "select * from tb_student";     $res = mysqli_query($mysqli,$sql);     //var_dump($res);     //3.处理得到的结果     //循环取出$res中的数据     while($row = mysqli_fetch_row($res)){          foreach($row as $key=>$val){               echo "$val--";          }          echo "<br>";     }     //4.关闭资源     mysqli_free_result($res);     mysqli_close($mysqli);?>

如果使用mysqli扩展库,建议使用面向对象。

三、操作细节

1、在mysqli扩展库中也提供了四种结果集

  1. mysqli_result::fetch_assoc  关联数组
  2. mysqli_result::fetch_array   关联数组或者索引数组
  3. mysqli_result::fetch_row   索引数组
  4. mysqli_result::fetch_object   对象形式

2、mysql语句注意

如果操作的字段类型是string类型的,则要求我们要用单引号包起来
如果操作的字段类型是数值型的,可以用单引号包起来也可以不用。

当然既然mysqli是mysql的增强,那么一定还有比mysql不能做到的东西,下一篇看一下mysqli的增强
















0 0