用于'IN'语句的PHP OCI8绑定(未知数量)参数

ber*_*rdt 6 php sql oracle-call-interface

对于SQL IN子句,如何在使用PHP OCI8绑定SQL时处理未知数量的参数?

例如,给出以下查询

select * from table1
where id > :id_1
and id in (:id_array_of_unknown_size)
Run Code Online (Sandbox Code Playgroud)

和要绑定的变量数组

$bind_array = array(
    ':id_1' => '1',
    ': id_array_of_unknown_size' => array('7','2','5',),
);
Run Code Online (Sandbox Code Playgroud)

另外需要注意的是,在我的特定情况下,输入array($bind_array)可能包含也可能不包含绑定元素的子数组.它也可以是以下

select * from table1
where id > :id_1
and id !=  :id_2
Run Code Online (Sandbox Code Playgroud)

$bind_array = array(
    ':id_1' => '1',
    ':id_2' => '5',
);
Run Code Online (Sandbox Code Playgroud)

ogr*_*res 0

您应该将数组与另一个函数绑定 - oci_bind_array_by_name

http://php.net/manual/en/function.oci-bind-array-by-name

你不能只用 oci_bind_by_name http://php.net/manual/en/function.oci-bind-by-name.php替换 :variable 与数组对象