0
我今天有一個奇怪的問題與我在PHP中使用的oci_bind_by_name
函數有關。oci_bind_by_name錯誤與TO_DATE SQL函數
讓我給你一個展示。
這裏是一個簡單的日期表:
create table test(col1 date);
insert into test values(to_date('01/01/2009','DD/MM/YYYY'));
insert into test values(to_date('01/01/2019','DD/MM/YYYY'));
insert into test values(to_date('01/01/2029','DD/MM/YYYY'));
insert into test values(to_date('01/01/2039','DD/MM/YYYY'));
啓動此查詢將導致2行,如果我綁定:dt_maj_deb
和:dt_maj_fin
至01/01/2009和2019年1月2日例如:
SELECT *
FROM TEST
WHERE col1 BETWEEN TO_DATE (:dt_maj_deb, 'DD/MM/YYYY')
AND TO_DATE (:dt_maj_fin, 'DD/MM/YYYY')
Results
-------
01.01.2009
01.01.2019
所以一切都如我們所預料的那樣。我擔心的是當我想從PHP啓動相同的查詢時。這裏是我的測試代碼:
$query = "SELECT * FROM TEST
WHERE col1 BETWEEN TO_DATE (:dt_maj_deb, 'DD/MM/YYYY')
AND TO_DATE (:dt_maj_fin, 'DD/MM/YYYY')";
$stmt = oci_parse($conn,$query);
$value = '01/01/2009';
oci_bind_by_name($stmt,':dt_maj_deb',$value);
$value = '01/02/2019';
oci_bind_by_name($stmt,':dt_maj_fin',$value);
oci_execute($stmt);
oci_fetch_all($stmt, $result);
var_dump($result);
oci_free_statement($stmt);
oci_close($conn);
Results
-------
array(1) {
["COL1"]=>
array(0) {}
}
我在想什麼?
謝謝亞歷克斯,我再次被oci圖書館欺騙,不是第一次......我希望這是最後一次:) – 2010-02-15 08:43:38