簡體   English   中英

如何使用PHP中的任何方法(oci / pdo)將包含字符串的數組綁定到oracle查詢(IN子句)?

[英]How to bind an array contains string to oracle query (IN clause) using any method(oci/pdo) in PHP?

我有一個數組,如下所述:

數組是$ number

array(84) { [0]=> string(0) "" [1]=> string(10) "12345678" [2]=> string(10) "12345679" [3]=> string(10) "12345610" [4]=> string(10) "12345611" [5]=> string(10) "12345612" [6]=> string(10) "12345613" [7]=> string(10) "12345614"}

現在,我要使數組綁定到我的sql查詢,如下所示:

$sql = " SELECT    id, 
    FROM      cust_data
    WHERE     whatever IN (:number)";

我嘗試使用以下方法:

$stid = oci_parse($conn, $sql); //Query SQL    
$idCollection = oci_new_collection($conn, 'ODCINUMBERLIST', 'SYS');
    foreach ($number as $num) {
        $idCollection->append($num);
    }
    oci_bind_by_name($stid, ':number', $idCollection,-1, SQLT_NTY);
    oci_execute($stid, OCI_DEFAULT);
    oci_fetch_all($stid,$result);
    var_dump( $result);

但這只是給我結果

數組(0){}

謝謝。

請參見Oracle免費書中的“在IN子句中綁定多個值” p169頁https://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html

總之,對於少量的值,請使用帶有綁定變量的固定SQL字符串。 如果數據值少於SQL中的實際綁定變量,則綁定null。 對於更大的列表,您可以構建一個SQL字符串:但仍使用綁定變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM