PHP连接和操作MySQL数据库基础教程
《PHP实例:PHP连接和操作MySQL数据库基础教程》要点: 从这里开始PHP教程 我的博客,后台数据库是什么?没错,就是MySQL,服务器端使用的脚本就是PHP,整个框架使用的是WordPress.PHP和MySQL就像夫妻一样,总是在一起干活.现在这里,就集合PHP,总结一下MySQL的实际使用,也算作是MySQL开发的入门.关于PHP与MySQL的合作,不外乎以下三种办法:PHP教程 1.mysql扩展;但是目前已经不保举使用;PHP教程 2.mysqli扩展;同时提供面向对象作风和面向过程的作风;要求MySQL版本是4.1及以上的;PHP教程 3.PDO扩展为PHP拜访数据库定义了一种轻量级的一致接口;PDO_MYSQL是对其的具体实现.这里暂时只关心开发.由于mysql扩展已经不推荐使用了,我也会与时俱进,不做总结;而mysqli和PDO方式用的比较多,所以这篇将会总结如何使用mysqli扩展来连接数据库服务器,如何查询和获取数据,以及如何执行其它重要任务.下一篇博文将会总结PDO的相关内容.PHP教程 使用mysqli扩展PHP教程 先看以下测试数据库db_test中的测试数据:PHP教程
代码如下:
mysql> select * from tb_test; +----+-----------+----------+------------+------------+ | id | firstname | lastname | email????? | phone????? | +----+-----------+----------+------------+------------+ |? 1 | Young???? | Jelly??? | 123@qq.com | 1384532120 | |? 3 | Fang????? | Jone???? | 456@qq.com | 1385138913 | |? 4 | Yuan????? | Su?????? | 789@qq.com | 1385138913 | +----+-----------+----------+------------+------------+ 3 rows in set (0.00 sec) 1.树立和断开连接PHP教程 与MySQL数据库交互时,首先要建立连接,最后要断开连接;这包含与服务器连接并选择一个数据库,以及最后关闭连接,释放资源.选择使用面向对象接口与MySQL服务器交互,首先需要通过其构造函数实例化mysqli类.PHP教程
代码如下:
<?php ??? // 实例化mysqli类 ??? $mysqliConn = new mysqli(); ??? // 连接服务器,并选择一个数据库 ??? $mysqliConn->connect('127.0.0.1','root','db_test'); ??? printf("MySQL error number:%d",$mysqliConn->errno); ??? // 或者 ??? // $mysqliConn->connect("http://127.0.0.1",'root'); ??? // $mysqliConn->select_db('db_test'); ??? ??? // 与数据库交互 ??? ??? // 关闭连接 ??? $mysqliConn->close(); ?> 一旦成功的选择了数据库,然后就可以对这个数据库执行数据库查询了.一旦脚本执行完毕,所有打开的数据库连接都会自动关闭,并释放资源.不过,有可能一个页面在执行期间需要多个数据库连接,各个连接都应当适当的加以关闭.即使只使用一个连接,也应该在脚本的最后将其关闭,这是一种很好的实践办法.在任何情况下,都由close()负责关闭连接.PHP教程 2.处理连接差错PHP教程 当然,如果无法连接MySQL数据库,那么不大可能在这个页面继续完成预期的工作了.因此,一定要注意监视连接错误并相应地做出反应.mysqli扩展包包含很多可以用来捕获错误消息的特性,另外也可以使用异常来做到这一点.例如,可以使用mysqli_connect_errno()和mysqli_connect_error()办法诊断并显示一个MySQL连接错误的有关信息.PHP教程 关于mysqli的具体信息可以在这里查看:http://php.net/manual/zh/book.mysqli.phpPHP教程 与数据库交互PHP教程 绝大多数查询都与创立、获取、更新和删除任务有关,这些任务统称为CRUD.这里就开始总结CRUD相关的内容.PHP教程 1.向数据库发送查询PHP教程 办法query()负责将query发送给数据库.它的定义如下:
代码如下:
mixed mysqli::query ( string $query [,int $resultmode = MYSQLI_STORE_RESULT ] ) 可选参数resultmode可以用于修改这个办法的行为,它接受两个可取值.这篇文章总结了二者之间的区别.;下面是一个简单的使用例子:PHP教程
代码如下:
<?php ??? // 实例化mysqli类 ??? $mysqliConn = new mysqli(); ? ??? // 连接服务器,并选择一个数据库 ??? // 错误的暗码 ??? $mysqliConn->connect('127.0.0.1','db_test'); ??? if ($mysqliConn->connect_error) ??? { ??????? printf("Unable to connect to the database:%s",$mysqliConn->connect_error); ??????? exit(); ??? } ??? ??? // 与数据库交互 ??? $query = 'select firstname,lastname,email from tb_test;'; ? ??? // 发送查询给MySQL ??? $result = $mysqliConn->query($query); ? ??? // 迭代处理结果集 ??? while (list($firstname,$lastname,$email) = $result->fetch_row()) ??? { ??????? printf("%s %s's email:%s<br/>",$firstname,$email); ??? } ??? ??? // 关闭连接 ??? $mysqliConn->close(); ?> 2.插入、更新和删除数据PHP教程 插入、更新和删除使用的是insert、update和delete查询完成的,其做法实际上与select查询相同.示例代码如下:PHP教程
代码如下:
<?php ??? // 实例化mysqli类 ??? $mysqliConn = new mysqli(); ? ??? // 连接服务器,email from tb_test;'; ??? // 发送查询给MySQL ??? $result = $mysqliConn->query($query); ? ??? // 迭代处理结果集 ??? while (list($firstname,$email); ??? } ??? ??? $query = "delete from tb_test where firstname = 'Yuan';"; ??? $result = $mysqliConn->query($query); ? ??? // 告诉用户影响了多少行 ??? printf("%d row(s) have been deleted.<br/>",$mysqliConn->affected_rows); ??? // 重新查询结果集 ??? $query = 'select firstname,$email); ??? } ??? // 关闭连接 ??? $mysqliConn->close(); ?> 3.释放查询内存PHP教程 有时可能会获取一个特别庞大的结果集,此时一旦完成处理,很有必要释放该结果集所哀求的内存.free()方法可以为我们完成这个任务.例如:
代码如下:
// 与数据库交互 $query = 'select firstname,email from tb_test;'; ? // 发送查询给MySQL $result = $mysqliConn->query($query); ? // 迭代处理成果集 while (list($firstname,$email) = $result->fetch_row()) { ??? printf("%s %s's email:%s<br/>",$email); } $result->free(); 4.解析查询成果PHP教程 一旦执行了查询并准备好结果集,下面就可以解析获取到的结果行了.你可以使用多个方法来获取各行中的字段,具体选择哪一个方法主要取决于个人爱好,因为只是引用字段的方法有所不同.PHP教程 (1)将成果放到对象中PHP教程 使用fetch_object()方法来完成.fetch_object()方法通常在一个循环中调用,每次调用都使得返回结果集中的下一行被填入一个对象,然后可以依照PHP典型的对象访问语法来访问这个对象.例如:
代码如下:
// 与数据库交互 $query = 'select firstname,email from tb_test;'; ? // 发送查询给MySQL $result = $mysqliConn->query($query); ? // 迭代处理成果集 while ($row = $result->fetch_object()) { ??? $firstname = $row->firstname; ??? $lastname = $row->lastname; ??? $email = $row->email; } $result->free(); (2)使用索引数组和关联数组获取成果PHP教程 mysqli扩展包还允许通过fetch_array()办法和fetch_row()办法分别使用关联数组和索引数组来管理结果集.fetch_array()办法实际上能够将结果集的各行获取为一个关联数组、一个数字索引数组,或者同时包括二者,可以说,fetch_row()是fetch_array的一个子集.默认地,fetch_array()会同时获取关联数组和索引数组,可以在fetch_array中传入参数来修改这个默认行为.PHP教程 MYSQLI_ASSOC,将行作为一个关联数组返回,键由字段名表示,值由字段内容表示; 确定所选择的行和受影响的行PHP教程 通常希望能够确定select查询返回的行数,或者受insert、update或delete影响的行数.PHP教程 (1)确定返回的行数PHP教程 如果希望了解select查询语句返回了若干行,num_rows属性很有用.例如:
代码如下:
// 与数据库交互 $query = 'select firstname,email from tb_test;'; ? // 发送查询给MySQL $result = $mysqliConn->query($query); ? // 获取行数 $result->num_rows; 记住,num_rows只在确定select查询所获取的行数时有用,如果要得到受insert、update或delete影响的行数,就要使用下面总结的affected_rows属性.PHP教程 (2)确定受影响的行数PHP教程 affected_rows属性用来获取受insert、update或delete影响的行数.代码示例见上面的代码.PHP教程 执行数据库事务PHP教程 有3个新办法增强了PHP执行MySQL事务的功能,分别为:PHP教程 1.autocommit函数,启用自动提交模式;PHP教程 autocommit()函数控制MySQL自动提交模式的行为,由传入的参数决定启动还是禁用自动提交;传入TRUE,则启动自动提交,传入false则禁用自动提交.无论启用还是禁用,胜利时都将返回TRUE,失败时返回FALSE.PHP教程 2.commit函数,提交事务;将当前事务提交给数据库,成功时返回TRUE,不然返回FALSE.PHP教程 3.rollback函数,回滚当前事务,不然返回FALSE.PHP教程 关于事务,我后面还要继续总结,这里就扼要的总结了一下这三个API.PHP教程 不会停止PHP教程 这只是MySQL学习的开始,不会停止.再接再励.PHP教程 编程之家培训学院每天发布《PHP实例:PHP连接和操作MySQL数据库基础教程》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |