使用预准备语句PDO(PHP)进行限制的SQL查询

时间:2014-08-26 19:49:49

标签: php mysql sql pdo

我是PDO的新手,但我需要使用它来避免SQL注入。

这是我的SQL查询,其中包含我通过POST请求获得的变量,我想使用该SQL查询执行PDO(此版本有效):

if($refid == "") $refid="%";

$lastOrders = "SELECT * FROM Orders WHERE REFID LIKE'$refid' 
               ORDER BY dateAdded DESC LIMIT 0,$limiter";
$ps_orders = $db->query($lastOrders);
$data = $ps_orders->fetchAll();

我的问题:给定的$ refid是我可以在数据库中找到的数字,或者它不是由POST请求指定的(因此值为$ refid =“”),在这种情况下我想将WHERE部分设置为:WHERE REFID LIKE'%',所以在这种情况下我可以看到每个“RefID”的所有结果。有没有办法这样做,或者我真的需要为这两种情况创建2个不同的SQL查询吗?

我的尝试:

if($refid == "") $refid="%";

$sql = "SELECT * FROM Orders WHERE REFID LIKE ':refid'
ORDER BY dateAdded DESC LIMIT :min,:max";
$ps_orders = $db->prepare($sql);
$ps_orders->bindParam(':refid', $refid, PDO::PARAM_STR);
$ps_orders->bindParam(':min', 0, PDO::PARAM_INT);
$ps_orders->bindParam(':max', $limiter, PDO::PARAM_INT);
$db->execute();

0 个答案:

没有答案