0

我是参数化查询的新手。我有以下查询。

SELECT  * FROM CrmCustomer WHERE crmcustomer_expense >? AND crmcustomer_expense <? AND crmcustomer_map_prop2 IN (SELECT sub_email  FROM abc WHERE sub_id = ?  OR sub_id = ? OR sub_id = ?)

当我将参数数组硬编码如下时,它可以工作。但是当我以编程方式制作数组时,它会给出不同的结果。两个查询都成功运行并给出结果。但是在硬编码时会返回正确的结果集。

硬编码参数数组

$filter_params2 = array(1000, 7000, '1501184385','807654340','100006497021111');

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

我终于找到了解决方案。在我以编程方式创建的参数数组中,所有参数都是字符串。对于整数参数,我必须强制它们像下面这样 int。我认为否则 sqlsrv 驱动程序会为占位符分配错误的参数。

$filter_params2 = intval($ds_filter);
于 2013-11-29T07:14:09.690 回答