php在5.1.和5.2.之间pdo数据库操作中的不同

php在5.1.和5.2.之间pdo数据库操作中的不同

ID:34725317

大小:67.24 KB

页数:4页

时间:2019-03-10

php在5.1.和5.2.之间pdo数据库操作中的不同_第1页
php在5.1.和5.2.之间pdo数据库操作中的不同_第2页
php在5.1.和5.2.之间pdo数据库操作中的不同_第3页
php在5.1.和5.2.之间pdo数据库操作中的不同_第4页
资源描述:

《php在5.1.和5.2.之间pdo数据库操作中的不同》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、介绍 今天发现php5.1.*和php5.2.*在数据库预编译代码执行的时候出现差异。 预编译优点1.使用占位符,避免逐字输入数据到SQL中。自动处理引号和反斜线等字符的转义——增加安全性。2.预先“准备”一条语句,然后在每次执行时绑定不同值达到重用的目的。——常用于以后被多次执行的语句。3.可读性强。 代码数据库连接代码都一样. $protol ='mysql:host=localhost;dbname=test';$username ='monty';$passwd ='0818';$dbh =new PDO($protol,$username,$passwd);以下是一些

2、测试。注意里面的SQL和for或者foreach语句!测试1(用key值进行绑定)$stmt =$dbh->prepare('select*fromt1wherename=:name');$params =array();$params['name']='rentao'; foreach($params as $k=>$v){    $stmt->bindParam($k,$v);}$stmt->execute(); $item =array();while($row =$stmt->fetch(PDO::FETCH_ASSOC)){    var_dump($row);}$s

3、tmt =null;$dbh =null; 结论:PHP5.1.*PHP5.2.*执行正常执行正常$params['name']='rentao'和$params[':name']='rentao'这两个都能执行,说明不受“:”限制。测试2(数字下标去绑定,但是绑定的起始参数是1)——":key"在php5.2.*上不能用数字下标绑定$stmt =$dbh->prepare('select*fromt1wherename=:namelimit2');$params =array();$params[]='rentao';//这里加不加":"都能成功执行  for($i=0,$i

4、Len =count($params);$i <$iLen;$i++){    $k =$i+1;    $stmt->bindParam($k,$params[$i]);}echo "HERE1";$stmt->execute();echo "HERE2"; $item =array();介绍 while($row =$stmt->fetch(PDO::FETCH_ASSOC)){    var_dump($row);}$stmt =null;$dbh =null; 结论:php5.1.*PHP5.2.*执行正常出现错误:“PHPWarning: PDOStateme

5、nt::execute():SQLSTATE[HY093]:Invalidparameternumber:parameterwasnotdefined”如果把":name"改成"?",那么两个版本都可以顺利进行。不能同时使用两种符号。如select*fromt2wherename=? limit :page  测试3(limit绑定:page)$stmt =$dbh->prepare('select*fromt2wherename=:name limit:page');$params =array();$params['name']='rentao';//这里加不加":"都能成

6、功执行$params['page']=2; foreach($params as $k=>$v){    $stmt->bindParam($k,$v);}$stmt->execute();echo "HERE1";$item =array();while($row =$stmt->fetch(PDO::FETCH_ASSOC)){    var_dump($row);}echo "HERE2";$stmt =null;$dbh =null; 结论:PHP5.1.*PHP5.2.*执行到$stmt->execute()时,进程一直处于等待状态中执行正常:打印不出结果  

7、 测试4(在limit下进行预编译操作:page)——使用“?”机制运行$stmt =$dbh->prepare('select* fromt2wherename=?limit?');$params =array();$params[]='rentao';$params[]=2;    for($i=0,$iLen =count($params);$i <$iLen;$i++){    $k =$i+1;    $stmt->bindParam($k,$params[$i]);}  $stm

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。