我是参数化查询的新手。我有以下查询。
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');
答案 0 :(得分:1)
我终于找到了解决方案。在我以程序方式创建的参数数组中,所有参数都是字符串。我必须强制它们像整数参数的波纹管一样。我认为sqlsrv驱动程序为占位符分配了错误的参数。
$filter_params2 = intval($ds_filter);