我是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();