下面是小编给大家分享的一篇PHP连接MySQL数据库的操作方法,或许能开阔眼界,增长见识,体验乐趣,下面就跟随中国E盟技术频道的编辑一起来看看。

关于PHP与MySQL的合作,不外乎以下三种方法:

1.mysql扩展;但是目前已经不推荐使用;

2.mysqli扩展;同时提供面向对象风格和面向过程的风格;要求MySQL版本是4.1及以上的;

3.PDO扩展为PHP访问数据库定义了一种轻量级的一致接口;PDO_MYSQL是对其的具体实现。这里暂时只关心开发。由于mysql扩展已经不推荐使用了,我也会与时俱进,不做总结;而mysqli和PDO方式用的比较多,所以这篇将会总结如何使用mysqli扩展来连接数据库服务器,如何查询和获取数据,以及如何执行其它重要任务。下一篇博文将会总结PDO的相关内容。

使用mysqli扩展

先看以下测试数据库db_test中的测试数据:

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.建立和断开连接

与MySQL数据库交互时,首先要建立连接,最后要断开连接;这包括与服务器连接并选择一个数据库,以及最后关闭连接,释放资源。选择使用面向对象接口与MySQL服务器交互,首先需要通过其构造函数实例化mysqli类。

// 实例化mysqli类

$mysqliConn = new mysqli();

// 连接服务器,并选择一个数据库

// 错误的密码

$mysqliConn->connect('127.0.0.1', 'root', 'root', '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

", $firstname, $lastname, $email);

}

// 关闭连接

$mysqliConn->close();

?>

2.插入、更新和删除数据

插入、更新和删除使用的是insert、update和delete查询完成的,其做法实际上与select查询相同。示例代码如下:

// 实例化mysqli类

$mysqliConn = new mysqli();

// 连接服务器,并选择一个数据库

// 错误的密码

$mysqliConn->connect('127.0.0.1', 'root', 'root', '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

", $firstname, $lastname, $email);

}

$query = "delete from tb_test where firstname = 'Yuan';";

$result = $mysqliConn->query($query);

// 告诉用户影响了多少行

printf("%d row(s) have been deleted.

", $mysqliConn->affected_rows);

// 重新查询结果集

$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

", $firstname, $lastname, $email);

}

// 关闭连接

$mysqliConn->close();

?>

3.释放查询内存

有时可能会获取一个特别庞大的结果集,此时一旦完成处理,很有必要释放该结果集所请求的内存。free()方法可以为我们完成这个任务。例如:

// 与数据库交互

$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

", $firstname, $lastname, $email);

}

$result->free();

4.解析查询结果

一旦执行了查询并准备好结果集,下面就可以解析获取到的结果行了。你可以使用多个方法来获取各行中的字段,具体选择哪一个方法主要取决于个人喜好,因为只是引用字段的方法有所不同。

(1)将结果放到对象中

使用fetch_object()方法来完成。fetch_object()方法通常在一个循环中调用,每次调用都使得返回结果集中的下一行被填入一个对象,然后可以按照PHP典型的对象访问语法来访问这个对象。例如:

// 与数据库交互

$query = 'select firstname, lastname, 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)使用索引数组和关联数组获取结果

mysqli扩展包还允许通过fetch_array()方法和fetch_row()方法分别使用关联数组和索引数组来管理结果集。fetch_array()方法实际上能够将结果集的各行获取为一个关联数组、一个数字索引数组,或者同时包括二者,可以说,fetch_row()是fetch_array的一个子集。默认地,fetch_array()会同时获取关联数组和索引数组,可以在fetch_array中传入参数来修改这个默认行为。

MYSQLI_ASSOC,将行作为一个关联数组返回,键由字段名表示,值由字段内容表示;

MYSQLI_NUM,将行作为一个数字索引数组返回,其元素顺序由查询中指定的字段名顺序决定;

MYSQLI_BOTH,就是默认的选项。

确定所选择的行和受影响的行

通常希望能够确定select查询返回的行数,或者受insert、update或delete影响的行数。

(1)确定返回的行数

如果希望了解select查询语句返回了多少行,num_rows属性很有用。例如:

// 与数据库交互

$query = 'select firstname, lastname, email from tb_test;';

// 发送查询给MySQL

$result = $mysqliConn->query($query);

// 获取行数

$result->num_rows;

记住,num_rows只在确定select查询所获取的行数时有用,如果要获得受insert、update或delete影响的行数,就要使用下面总结的affected_rows属性。

(2)确定受影响的行数

affected_rows属性用来获取受insert、update或delete影响的行数。代码示例见上面的代码。

执行数据库事务

有3个新方法增强了PHP执行MySQL事务的功能,分别为:

1.autocommit函数,启用自动提交模式;

autocommit()函数控制MySQL自动提交模式的行为,由传入的参数决定启动还是禁用自动提交;传入TRUE,则启动自动提交,传入false则禁用自动提交。无论启用还是禁用,成功时都将返回TRUE,失败时返回FALSE。

2.commit函数,提交事务;将当前事务提交给数据库,成功时返回TRUE,否则返回FALSE。

3.rollback函数,回滚当前事务,成功时返回TRUE,否则返回FALSE。

以上就是关于PHP连接MySQL数据库的操作方法,是不是特别的实用呢,更多关于PHP的内容,可以多多关注下中国E盟技术频道,我们会不断的更新。

PHP连接mysql数据库使用方法,PHP连接MySQL数据库的操作方法相关推荐

  1. 用g++编译生成动态连接库*.so的方法及连接

    用g++编译生成动态连接库*.so的方法及连接 1.动态库*.so的编译 这里我们用到4个文件,它们分别为:SoDemoTest.h.one.cpp.two.cpp.three.cpp.它们的内容如下 ...

  2. java连接MySQL几种方法_Java连接MySQL数据库三种方法

    好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...

  3. mysql 100w exists_exists方法如何在Mysql数据库中使用

    exists方法如何在Mysql数据库中使用 发布时间:2020-12-14 14:09:45 来源:亿速云 阅读:68 作者:Leah 这篇文章给大家介绍exists方法如何在Mysql数据库中使用 ...

  4. mysql数据库导入方法_MySQL导入导出数据库方法介绍

    我们都知道不管是在于windows系统还是在linux环境中MySQL数据库的导入分为有两种1) 先导出数据库SQL脚本,再导入:2) 直接拷贝数据库目录和文件. 操作方法 1,进入MySQL目录下的 ...

  5. mysql zerofill设置方法_在MySQL中使用ZEROFILL设置自定义自动增量

    让我们首先创建一个表.这里.我们使用ZEROFILL和AUTO_INCREMENT设置了UserId列mysql> create table DemoTable1831 ( UserId int ...

  6. 苹果炉石传说显示无法连接服务器,《炉石传说》无法连接到战网解决方法 无法连接请检查网络连接如何快速解决...

    导 读 炉石传说无法连接请检查网络连接怎么办?无法连接到战网怎么解决?近期游戏进行了版本更新,在本次的更新中,有很多玩家都出现了各式各样的bug,其中最频繁的一个就是提示无法连接,请检查网络连接或者显 ...

  7. 炉石传说显示无法连接服务器失败,《炉石传说》无法连接到战网解决方法 无法连接请检查网络连接如何快速解决...

    炉石传说无法连接请检查网络连接怎么办?无法连接到战网怎么解决?近期游戏进行了版本更新,在本次的更新中,有很多玩家都出现了各式各样的bug,其中最频繁的一个就是提示无法连接,请检查网络连接或者显示无法连 ...

  8. 用g++编译生成动态连接库*.so的方法及连接(dlopen() dlsym() dlclose())

    ================================================================ //test_so_file.h ifndef TEST_SO_FIL ...

  9. mysql打不开 10061_mysql 10061报错,mysql 10061解决方法,10061问题,mysql学习,mysql启动

    有时候mysql打不开,出现mysql10061问题 树懒君建议你,先检查MySQL 服务是否启动,如果没有启动则启动这个服务即可解决:如果问题还是没有解决请尝试下面的步骤: 首先要关闭MYSQL服务 ...

最新文章

  1. Notification 使用详解
  2. Flume Sinks官网剖析(博主推荐)
  3. linux shell (()) 双括号运算符使用
  4. linux最初配置( vimrc设置 、tab键设置 inputrc、中文输入法等等)
  5. 计算机保护地阻值,机房接地系统的一般接地电阻要小于多少欧姆?
  6. 信息学奥赛一本通(1047:判断能否被3,5,7整除)
  7. 如何构建一个简单的语音识别应用程序
  8. a href=# 与 a href=javascript:void(0) 的区别
  9. jedis连接池详解(Redis)
  10. 持久层和数据访问层_什么是持久层? JDBC 演变的 Mybatis 架构分析
  11. 线性方程组迭代解法——雅可比(Jacobi)迭代法,Gauss-Seidel迭代法和超松弛(SOR)迭代法
  12. 中国城市供水统计年鉴
  13. 我的世界贝爷生存用什么Java_我的世界贝爷生存MOD教程 [MITE] MC实在是太简单了教程详解 | 我的世界 | MC世界侠...
  14. 十分钟学懂Python入门基础3(中)
  15. HttpWatch使用教程
  16. python怎么绘制图例_用Python绘制图例
  17. ACC-C++组初赛
  18. 完美的支持Retina MACBOOK的股票软件-富图牛牛
  19. 在tsx里写html模板,在Vue中写TSX有哪些需要注意的地方
  20. Java8——Stream流

热门文章

  1. 2020 年 GitHub 上那些优秀 Android 开源库,这里是 Top10! | 原力计划
  2. 和无用代码说再见!阿里文娱无损代码覆盖率统计方案
  3. 微信上线「行程查询」服务;钉钉 CEO 回应被打「一星」;Go 1.14 发布 | 极客头条...
  4. 如何玩转 HTTP 3?
  5. 多种方式创建 Entity Framework Core 上下文
  6. 腾讯发力研发文化升级,宣布加入Linux基金会TODO 工作组
  7. 我为什么放弃了 Chrome?
  8. “iPhone 3 年内必死!”
  9. 百度又做电商;ofo 退出日本;Kotlin 1.3 正式发布 | 极客头条
  10. 华为云发布 EI 城市智能体