pdo的bindParam()

最近开始自己写写代码,打打基础降低翻手册频率。

首先就是写数据库操作,增删改查写成4个方法。使用pdo,遇到一些问题记录一下。

$pdo = new PDO(‘mysql:host=127.0.0.1;dbname=db‘, ‘user‘, ‘password‘);

 

1.  limit bindParam()第三个参数默认为str类型

$sql = ‘select * from table where id=:id limit :start,:row‘; 

$stmt = $pdo->prepare($sql); 

$id = 28;
$start = 0;
$row = 1; 

$stmt->bindParam(‘:id‘, $id);
//这里必须有第三个参数,否则默认为字符类型,查询结果为空
$stmt->bindParam(‘:start‘, $start, PDO::PARAM_INT);
$stmt->bindParam(‘:row‘, $row, PDO::PARAM_INT); 

$stmt->execute(); 

$res = $stmt->fetchAll(PDO::FETCH_ASSOC); 

 

2. in 参数不能绑定

$sql = ‘select * from  table where id in :in‘; 

$in = ‘(28,29)‘; 

$stmt = $pdo->prepare($sql); 

//不论有没第三个参数,结果都是空
//$stmt->bindParam(‘:in‘, $in);
$stmt->bindParam(‘:in‘, $in, PDO::PARAM_STR);
$stmt->execute(); 

$res = $stmt->fetchAll(PDO::FETCH_ASSOC); 

 

3. 要防止占位符重复

如下面:name就重复了

$sql = ‘update table set name=:name where name=:name‘;

 

4. insert使用?占位符比:key类型的占位符方便

$sql = ‘insert into table (name,password) values (?,?)‘;
$stmt = $pdo->prepare($sql);

$insertValue = array(‘name‘, ‘password‘);
$stmt->execute($insertValue);

 

5. 不能使用foreach的$key和$value绑定,bindParam($key, $value)

原来这条鸟哥几年前已经分析过了:http://www.laruence.com/2012/10/16/2831.html

时间: 2024-10-11 05:42:14

pdo的bindParam()的相关文章

pdo中bindParam()与bindValue的区别

2012-07-03  ConfiJin  文章来源  阅 2491  转 2 转藏到我的图书馆 微信分享: php pdo中bindParam() 和 bindValue()方法的区别 方法 bindParam() 和 bindValue() 非常相似.唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值. 所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值. 01 $stm = $pdo->prepare("select

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

PDO中包含三个预定一类:PDO.PODStatement和PDOException. 1.PDO类 PDO类代表一个PHP和数据库之间的连接,PDO类所拥有的方法如下: PDO:构造器,构建一个新的PDO对象. beginTransaction:事务开始. commit:提交事务 errorCode:从数据库返回一个错误代号. errorInfo:从数据库返回一个含有错误信息的数据. exec:执行一条sql语句并还回影响的行数 getAttribute:返回一个数据库连接属性. lastIn

数据库抽象层 - PDO

数据库抽象层: 在数据迁移和项目操作多数据库时,为了便于操作而提供一种的解决方案. 当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将MS SQL Server迁移到MySQL. 代码规划必须规范,尽量使用相同的数据进行对象实例化,并且使用相同的数据库抽象层(如PDO).这样只需要改变系统的配置文件即可迁移数据库. 目前,使用PHP进行不同的数据库系统开发,这些系统很不相同,而许多数据库抽象层在PHP的层次有所不同,但彼此使用方法相当,它的发展无疑会提高开发效率. 常见

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(二)

hi 昨天又213了,虽然有室友3点多才睡觉的客观影响,但是昨晚不想学东西是本质原因.今天搞起.打算3.4天之内,学完PDO和AJAX这两个,还望大家没事儿来骂骂我,免的我又偷懒. 1.PDO 二.PDO对象的使用(二) 2.2 错误信息 errorCode()——错误号: errorInfo()——错误信息: 举个栗子 <?php/* * PDO错误信息 */ $pdo=new PDO('mysql:host=localhost;dbname=imooc','root',''); $pdo->

php PDO遇到的坑

<?php $dbConn = new PDO( "mysql:host=localhost;dbname=adtuu",'root','root', array( // 强制 PDO 获取的表字段字符的大小写转换,或原样使用列信息 PDO::ATTR_CASE => PDO::CASE_LOWER, // 执行出错时抛出异常 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 将返回的空字符串转换为 SQL 的 NULL

PDO 对 mysql的基本操作

PDO扩展操作 <?php $dsn = 'mysql:dbname=yii2;host=localhost'; $user = 'root'; $password = '123456'; try { $dbh = new PDO($dsn,$user,$password,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); }catch(PDOException $e) { echo 'Connection failed: ' . $e-&

php PDO mysql写法

php PDO写法连接mysql: 写法一: $db="mysql:host=localhost;dbname=sql" : //连接数据,地址localhost:数据库名称sql: $username="root"; //数据库登录账号: $password="root"; //数据库登录密码: try{ $pdo=new PDO($db,$username,$password);   //连接数据库赋值$pdo; }catch(PDOExce