PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
介绍
代码如下: $stmt = $dbh->prepare('select * from t1 where name=:name limit 2'); $params = array(); $params[] = 'rentao';// 这里加不加":"都能成功执行 for($i=0,$iLen = count($params); $i < $iLen; $i++){ $k = $i+1; $stmt->bindParam($k,$params[$i]); } echo "HERE1n"; $stmt->execute(); echo "HERE2n"; $item = array(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ var_dump($row); } $stmt = null; $dbh = null; 结论:
代码如下: prepare('select * from t2 where name=:name limit :page'); $params = array(); $params['name'] = 'rentao';// 这里加不加":"都能成功执行 $params['page'] = 2; foreach($params as $k=>$v){ $stmt->bindParam($k,$v); } $stmt->execute(); echo "HERE1n"; $item = array(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ var_dump($row); } echo "HERE2n"; $stmt = null; $dbh = null; 结论:
测试4(在limit下进行预编译操作:page)——使用“?”机制运行 代码如下: $stmt = $dbh->prepare('select * from t2 where name=? limit ?'); $params = array(); $params[] = 'rentao'; $params[] = 2; for($i=0,$params[$i]); } $stmt->execute(); $item = array(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ var_dump($row); } $stmt = null; $dbh = null;
总结PHP在使用PDO做数据库预编译操作的时候,尽量避免使用limit,order by,group by 做预编译处理。绑定变量我们尽量使用统一标准,要不然都使用“?”,要不然使用“:key”。 有用的命令,我在php5.1.*进行测试,测试完了,我通过scp把文件传输到php5.2.*服务器上 代码如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |