Как связать массив, содержащий строку с запросом оракула (предложение IN), используя любой метод (oci / pdo) в PHP? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть массив, как описано ниже:

массив равен $ 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) {}

Спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

См. «Связывание нескольких значений в предложении IN» на стр. 169 бесплатной книги от Oracle. https://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html

В заключение, для небольшого числа значений используйте фиксированную строку SQL с переменными связывания.Bind null, если в SQL меньше значений данных, чем реальных переменных связывания.Для больших списков вы можете создать строку SQL: но все равно использовать переменные связывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...