在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工

在上一篇文章《使用PDO构造函数连接数据库及DSN详解》中,我们介绍了如何使用构造函数连接数据库和DSN的详解,那么我们这篇文章跟大家介绍在PDO中执行SQL语句的三种方式,下面我们将一一介绍!

第一种方法:exec()方法

exec()方法返回执行SQL 语句后受影响的行数,其语法格式如下:


1




​int PDO::​​​​exec​​​​(string statement)​


参数 satatement 是要执行的SQL语句,该方法返回执行SQL 语句时受影响的行数,通常用于 INSERT,DELETE和UPDATE语句中。下面我们用具体代码讲解,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17




​<?php​

​header(​​​​"Content-Type:text/html; charset=utf-8"​​​​);    ​​​​//设置页面的编码格式​

​$dbms​​ ​​= ​​​​"mysql"​​​​;                                  ​​​​// 数据库的类型​

​$dbName​​ ​​=​​​​"php_cn"​​​​;                                ​​​​//使用的数据库名称​

​$user​​ ​​= ​​​​"root"​​​​;                                   ​​​​//使用的数据库用户名​

​$pwd​​ ​​= ​​​​"root"​​​​;                                    ​​​​//使用的数据库密码​

​$host​​ ​​= ​​​​"localhost"​​​​;                              ​​​​//使用的主机名称​

​$dsn​​  ​​= ​​​​"$dbms:host=$host;dbName=$dbName "​​​​;​

​try​​​​{                                             ​​​​//捕获异常​

​$pdo​​ ​​= ​​​​new​​ ​​PDO(​​​​$dsn​​​​,​​​​$user​​​​,​​​​$pwd​​​​);             ​​​​//实例化对象​

​$query​​​​=​​​​"insert into user(username,password) values('php','523')"​​​​;​​​​//需要执行的sql语句​

​$res​​​​=​​​​$pdo​​​​->​​​​exec​​​​(​​​​$query​​​​);​​​​//执行添加语句并返回受影响行数​

​echo​​ ​​"数据添加成功,受影响行数为: "​​​​.​​​​$res​​​​;​

​}​​​​catch​​​​(Exception ​​​​$e​​​​){​

​die​​​​(​​​​"Error!:"​​​​.​​​​$e​​​​->getMessage().​​​​'<br>'​​​​);​

​}​

​?>​


输出结果为:

 

第二种方法:query()方法

query()方法用于返回执行查询后的结果集,该函数的语法格式如下如下:


1




​PDOStatement PDO::query(string statement)​


参数 satatement 是要执行的 SQL语句,它返回的是一个PODStatement对象!具体请看下面示例代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17




​<?php​

​header(​​​​"Content-Type:text/html; charset=utf-8"​​​​);    ​​​​//设置页面的编码格式​

​$dbms​​ ​​= ​​​​"mysql"​​​​;                                  ​​​​// 数据库的类型​

​$dbName​​ ​​=​​​​"php_cn"​​​​;                                ​​​​//使用的数据库名称​

​$user​​ ​​= ​​​​"root"​​​​;                                   ​​​​//使用的数据库用户名​

​$pwd​​ ​​= ​​​​"root"​​​​;                                    ​​​​//使用的数据库密码​

​$host​​ ​​= ​​​​"localhost"​​​​;                              ​​​​//使用的主机名称​

​$dsn​​  ​​= ​​​​"$dbms:host=$host;dbName=$dbName "​​​​;​

​try​​​​{​

​$pdo​​​​=​​​​new​​ ​​PDO(​​​​$dsn​​​​,​​​​$user​​​​,​​​​$pwd​​​​);​

​$query​​​​=​​​​"select * from user"​​​​;​

​$res​​​​=​​​​$pdo​​​​->query(​​​​$query​​​​);​

​print_r(​​​​$res​​​​);​

​}​​​​catch​​​​(Exception ​​​​$e​​​​){​

​die​​​​(​​​​"Error!:"​​​​.​​​​$e​​​​->getMessage().​​​​'<br>'​​​​);​

​}​

​?>​


输出结果为:

 

注意:

1、query和exec都可以执行所有的sql语句,只是返回值不同而已。

2、query可以实现所有exec的功能。

3、当把select语句应用到 exec 时,总是返回 0

4、如果要看查询的具体结果,可以通过foreach语句完成循环输出

 

第三种种方法:预处理语句:prepare()语句和execute()语句

 

预处理语句包括prepare()和execute()两种方法。首先,通过prepare()方法做查询准备工作,然后通过execute()方法执行查询,并且还可以通过bindParam()方法来绑定参数给execute()方法,语法如下:


1

2




​PDOStatement PDO::prepare(string statement[,​​​​array​​ ​​driver_options])​

​bool PDOStatement::execute([​​​​array​​ ​​input_parameters])​


在PDO中通过预处理语句prepare()和execute()执行SQL查询语句,使用循环把数据循环出来,下面我们具体看下示例代码:​​https://www.bzddrive.com/news/1332.html​


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19




​<?php​

​header(​​​​"Content-Type:text/html; charset=utf-8"​​​​);    ​​​​//设置页面的编码格式​

​$dbms​​ ​​= ​​​​"mysql"​​​​;                                  ​​​​// 数据库的类型​

​$dbName​​ ​​=​​​​"php_cn"​​​​;                                ​​​​//使用的数据库名称​

​$user​​ ​​= ​​​​"root"​​​​;                                   ​​​​//使用的数据库用户名​

​$pwd​​ ​​= ​​​​"root"​​​​;                                    ​​​​//使用的数据库密码​

​$host​​ ​​= ​​​​"localhost"​​​​;                              ​​​​//使用的主机名称​

​$dsn​​  ​​= ​​​​"$dbms:host=$host;dbname=$dbName"​​​​;​

​try​​​​{​

​$pdo​​​​=​​​​new​​ ​​PDO(​​​​$dsn​​​​,​​​​$user​​​​,​​​​$pwd​​​​);​​​​//初始化一个PDO对象,就是创建了数据库连接对象$pdo​

​$query​​​​=​​​​"select * from user"​​​​;​​​​//需要执行的sql语句​

​$res​​​​=​​​​$pdo​​​​->prepare(​​​​$query​​​​);​​​​//准备查询语句​

​$res​​​​->execute();​

​while​​​​(​​​​$result​​​​=​​​​$res​​​​->fetch(PDO::FETCH_ASSOC)){​

​echo​​ ​​$result​​​​[​​​​'id'​​​​].​​​​" "​​​​.​​​​$result​​​​[​​​​'username'​​​​].​​​​" "​​​​.​​​​$result​​​​[​​​​'password'​​​​].​​​​'<br>'​​​​;​

​}​

​}​​​​catch​​​​(Exception ​​​​$e​​​​){​

​die​​​​(​​​​"Error!:"​​​​.​​​​$e​​​​->getMessage().​​​​'<br>'​​​​);​

​}​