Php PDO准备了带有%和限制的报表

Php PDO准备了带有%和限制的报表,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我对PDO真的很陌生,但我需要使用它来避免SQL注入 这是我的SQL查询,其中包含通过POST请求获得的变量,我想对该SQL查询进行PDO(此版本有效): 我的问题:给定的$refid要么是我可以在数据库中找到的数字,要么不是POST请求指定的(因此值为$refid=“”),在这种情况下,我想将WHERE部分设置为:WHERE refid类似“%”,这样我就可以看到每个“refid”的所有结果。有没有办法做到这一点,或者我真的需要为这两种情况创建两个不同的SQL查询 我的尝试(不起作用,无法找出

我对PDO真的很陌生,但我需要使用它来避免SQL注入

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

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

我的尝试(不起作用,无法找出确切的问题):


bindParam
需要一个变量引用,因此它不能作为

bindParam(":min", 0, PDO::PARAM_INT)

您可以创建一个类似于
$zero=0
,但这似乎是不必要的,所以您可以直接使用它。
(int)$limiter
也一样,它变成了一个值而不是一个变量。

是否提供了任何错误消息?如我所述,$refid是通过POST请求设置的:$refid=$\u POST['refid'];
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', (int)$limiter, PDO::PARAM_INT);
$ps_orders->execute();
$data = $ps_orders->fetchAll();
bindParam(":min", 0, PDO::PARAM_INT)