php使用PDO执行SQL语句的方法分析


Posted in PHP onFebruary 16, 2017

本文实例讲述了php使用PDO执行SQL语句的方法。分享给大家供大家参考,具体如下:

exec()方法

exec()方法返回执行后受影响行数,语法如下:

int PDO::exec(string statement)

参数statement是要执行的SQL语句。该方法返回执行查询时受影响的行数,通常情况下用于INSERT,DELETE和UPDATE语句中。

例如:

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='password';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="insert into user(username,password) values('admin','123456')";//需要执行的sql语句
$res=$pdo->exec($query);//执行添加语句并返回受影响行数
echo "数据添加成功,受影响行数为: ".$res;
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}

运行结果为:

数据添加成功,受影响行数为: 1

query()方法

query()方法用于返回执行查询后的结果集,语法如下

PDOStatement PDO::query(string statement)

参数statement 是要执行的SQL语句。它返回的是一个PDOStatement对象

例如:

$dbms='mysql';
$dbName='admin';
$user='root';
$pwd='905407339';
$host='localhost';
$dsn="$dbms:host=$host;port=3306;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>');
}

运行结果为:

PDOStatement Object ( [queryString] => select * from user )

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

例如:

foreach($res as $val){
echo $val['username']."----".$val['password'].'<br>';
}

运行结果为:

107lab----e10adc3949ba59abbe56e057f20f883e
admin----123456

说明:如果要查看foreach的详细用法请查看:https://3water.com/article/68786.htm

query()与exec()

query可以实现所有exec的功能

例如:

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='905407339';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="insert into user(username,password) values('admin','123456')";//需要执行的sql语句
$res=$pdo->query($query);//执行添加语句并返回受影响行数
echo "数据添加成功,受影响行数为: ".$res->rowCount();
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}

运行结果为:

数据添加成功,受影响行数为: 1

注:

1、query和exec都可以执行所有的sql语句,只是返回值不同而已。
2、query可以实现所有exec的功能。
3、当把select语句应用到 exec 时,总是返回 0

预处理语句----prepare()语句和execute()语句

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

PDOStatement PDO::prepare(string statement[,array driver_options])
bool PDOStatement::execute([array input_parameters])

例如:

在PDO中通过预处理语句prepare()和execute()执行SQL查询语句,并且应用while()语句和fetch()方法完成数据的循环输出

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='905407339';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;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>');
}

运行结果为:

1 107lab e10adc3949ba59abbe56e057f20f883e
4 admin 123456
5 admin 123456

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
mysql建立外键
Nov 25 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 PHP
smarty模板数学运算示例
Dec 11 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
php四种定界符详解
Feb 16 #PHP
php使用PDO获取结果集的方法
Feb 16 #PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 #PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 #PHP
php中的单引号、双引号和转义字符详解
Feb 16 #PHP
php输出图像的方法实例分析
Feb 16 #PHP
替换php字符串中的单引号为双引号的方法
Feb 16 #PHP
You might like
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
php设计模式 Facade(外观模式)
2011/06/26 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
Python模块学习 filecmp 文件比较
2012/08/27 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
python构建深度神经网络(续)
2018/03/10 Python
pip命令无法使用的解决方法
2018/06/12 Python
python读写LMDB文件的方法
2018/07/02 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
如何通过python实现全排列
2020/02/11 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
外企测试工程师面试题
2015/02/01 面试题
大学活动邀请函
2014/01/28 职场文书
居安思危观后感
2015/06/11 职场文书
与死神共舞观后感
2015/06/15 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
pytorch 实现在测试的时候启用dropout
2021/05/27 Python