将参数传递给SQLSRV WHERE IN查询

时间:2013-11-29 06:36:13

标签: php sqlsrv

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

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');

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。在我以程序方式创建的参数数组中,所有参数都是字符串。我必须强制它们像整数参数的波纹管一样。我认为sqlsrv驱动程序为占位符分配了错误的参数。

$filter_params2 = intval($ds_filter);