pdo中bindParam()与bindValue的区别

2012-07-03  ConfiJin  文章来源  阅 2491  转 2

转藏到我的图书馆

微信分享:

php pdo中bindParam() 和 bindValue()方法的区别

方法 bindParam() 和 bindValue() 非常相似。
唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值。

所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值。

01 $stm $pdo->prepare("select * from users where user = :user");
02 $user "jack";
03 //正确
04 $stm->bindParam(":user",$user);
05 //错误
06 //$stm->bindParam(":user","jack");
07 //正确
08 $stm->bindValue(":user",$user);
09 //正确
10 $stm->bindValue(":user","jack");

另外在存储过程中,bindParam可以绑定为input/output变量,如下面:

1 $stm $pdo->prepare("call func(:param1)");
2 $param1 "abcd";
3 $stm->bindParam(":param1",$param1); //正确
4 $stm->execute();

存储过程执行过后的结果可以直接反应到变量上。

对于那些内存中的大数据块参数,处于性能的考虑,应优先使用前者。

时间: 2024-11-07 09:32:27

pdo中bindParam()与bindValue的区别的相关文章

PDO的bindParam与bindValue的区别

转自:https://stackoverflow.com/questions/1179874/what-is-the-difference-between-bindparam-and-bindvalue#answer-5077108 PDOStatement::bindParam 与 PDOStatement::bindValue()不同, 变量被以引用方式绑定到点位符上而且仅仅当调用PDOStatement::execute()时才会去计算具体被绑定变量在PDOStatement::execu

PHP扩展PDO MySQL之PDOStatement::bindParam vs bindValue

PHP扩展PDO MySQL之PDOStatement::bindParam vs bindValue技术 maybe yes 发表于2015-11-16 13:27 原文链接 : http://blog.lmlphp.com/archives/155/The_difference_of_PDOStatement_bindParam_and_bindValue_of_PHP_extension_PDO_MySQL  来自 : LMLPHP后院 前些日子将 LBlog 在线体验站点 http://

PDO中的预处理

PDO中的基本的原理和步骤和MySQL中的预处理都是一样的,只不过就是把MySQL中的预处理所有命令行的语法封装成了PDO对象的几个公开的方法而已! 1.发送预处理语句 此时,我们需要调用pdo对象的prepare方法,得到一个PDOStatement结果对象! 2.绑定参数 调用PDOStatement对象中的bindParam方法: 3.执行预处理语句 调用PDOStatement对象中的execute方法,如果执行成功,就返回true,如果执行失败就返回false! 下面是代码 <?php

php中关于mysqli和mysql区别的一些知识点分析

看书.看视频的时候一直没有搞懂mysqli和mysql到底有什么区别.于是今晚“谷歌”一番,整理一下.需要的朋友可以参考下. 一: PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MySQLi 的 i 代表 Improvement ,提更了相对进阶的功能,就 Extension 而言,本身也增加了安全性.而 PDO (PHP Data Object) 则是提供了一个 Abstraction Layer 来操作资料库,用讲的其实看不出来有有什麽差别,

PDO中获取结果集

fetch()方法 fetch()方法用于获取结果集的下一行,语法如下: mixed PDOStatement::fetch([int fetch_style][,int cursor_orientation[,int cursor_offset]]]) 参数fetch_style控制结果集的返回方式 PDO::FETCH_ASSOC -- 关联数组形式 PDO::FETCH_NUM -- 数字索引数组形式 PDO::FETCH_BOTH -- 两者数组形式都有,这是缺省的 PDO::FETCH

PDO中执行SQL语句

exec()方法 exec()方法返回执行后受影响行数,语法如下: int PDO::exec(string statement) 参数statement是要执行的SQL语句.该方法返回执行查询时受影响的行数,通常情况下用于INSERT,DELETE和UPDATE语句中. 例如: $dbms='mysql';//数据库类型 $dbName='admin';//使用的数据库 $user='root';//数据库连接用户名 $pwd='password';//数据库连接密码 $host='local

PDO中获取结果集之fetchAll()方法详解

fetchAll()方法是获取结果集中的所有行,返回一个包含结果集中所有行的二进制数组!大理石机械构件维修厂家 那么在上一篇<PDO中获取结果集之fetch()方法详解>中,我们介绍了fetch()方法获取结果集,我们今天将要介绍的fetchAll()方法与上一个方法fetch()类似,但是该方法只需要调用一次就可以获取结果集中的所有行,并赋给返回的数组(二维). fetchAll()方法的语法格式如下: 1 array PDOStatement::fetchAll ([ int $fetch

PDO中执行SQL语句的三种方法

在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO构造函数连接数据库及DSN详解>中,我们介绍了如何使用构造函数连接数据库和DSN的详解,那么我们这篇文章跟大家介绍在PDO中执行SQL语句的三种方式,下面我们将一一介绍! 第一种方法:exec()方法 exec()方法返回执行SQL 语句后受影响的行数,其语法格式如下: 1 int PDO::exec(

【翻译】JAVA中抽象类和接口的区别

不知道有没有人翻译过了,这篇是挺简单的,权当复习一遍内容吧. 很多常见的面试问题如"抽象类和接口有什么区别","你在什么时候用抽象类什么时候用接口".所以在这篇文章里面,我们会讨论一下这个话题. 在开始讨论它们的区别之前,我们先看看它们的介绍. Abstract class 抽象类 抽象类被用来抽象出子类的共同特征.它是不能被实例化的,它只能被子类继承作为超类使用.抽象类被用作它的子类下的层次结构创建模板(Abstract classes are used to c