网站地图    收藏   

主页 > 后端 > php资料库 >

PDO不能使用预处理的两处地方_自学php网

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] 有些童鞋使用预处理方式取数据库信息时发现结果是空,但数据库的确存在信息。这个是新手经常忽略的一个地方,甚至可能调试半天都不知道问题出在哪里? 第一、MySQL中的LIMIT关键字...

有些童鞋使用预处理方式取数据库信息时发现结果是空,但数据库的确存在信息。这个是新手经常忽略的一个地方,甚至可能调试半天都不知道问题出在哪里?

 

第一、MySQL中的LIMIT关键字不能使用预处理

错误的:以下语句在LIMIT中使用了':start',':num'预处理绑定参数方式导致取不出数据,但不会报错。

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test',root,root);
$start = 20;
$num = 10;
$sql = 'SELECT * FROM tab LIMIT :start,:num';
$stmt = $pdo->prepare($sql);
$param = array(':start'=>$start,':num'=>$num);
$stmt->execute($param);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data); 
?>

正确的:直接拼出LIMIT语句,结果正常

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test',root,root);
$start = 20;
$num = 10;
$sql = 'SELECT * FROM tab LIMIT '.$start.','.$num;
$stmt = $pdo->prepare($sql);
//$param = array(':start'=>20,':num'=>10);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data); 
?>

第二、MSSQL中TOP关键字不能使用预处理

错误的:在TOP关键字中使用了':top'预处理绑定参数方式导致取不出数据,同样也不会报错

<?php
$pdo = new PDO('mssql:host=localhost;dbname=test',root,root);
$top = 10;
$sql = 'SELECT TOP :top * FROM tab';
$stmt = $pdo->prepare($sql);
$param = array(':top'=>$top);
$stmt->execute($param);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data); 
?>

正确的:直接拼出TOP关键字语句,结果能取出数据

<?php
$pdo = new PDO('mssql:host=localhost;dbname=test',root,root);
$top = 10;
$sql = 'SELECT TOP '.$top.' * FROM tab';
$stmt = $pdo->prepare($sql);
//$param = array(':top'=>$top);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($data); 
?>

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论