2011-02-07 41 views
1

任何人都可以指導我使用oci_bind_by_name。我寫了這段代碼:oci_bind_by_name不能在PHP中工作

$connection = initDB(); 
$validation_query = "SELECT * from admin where admin_id= :uid and password= :pwd"; 
$s = oci_parse($connection, $validation_query); 
oci_bind_by_name($s, ':uid', $id); 
oci_bind_by_name($s, ':pwd', $pass); 
$res=oci_execute($s, OCI_DEFAULT); 
$result_row = oci_fetch_array($s, OCI_ASSOC); 

但是,對代碼稍作修改並在運行中生成查詢後,它開始工作。

$connection = initDB();  
$validation_query = "SELECT * from admin where admin_id= '".$id."' and password= '".$pass."'"; 
$s = oci_parse($connection, $validation_query); 
//oci_bind_by_name($s, ':uid', $id); 
//oci_bind_by_name($s, ':pwd', $pass); 
$res=oci_execute($s, OCI_DEFAULT); 
$result_row = oci_fetch_array($s, OCI_BOTH); 

我不知道這個,並已經搜索論壇和互聯網。請幫助我。

+0

什麼不行?你使用的是什麼PHP和Oracle版本? – richsage 2011-02-07 13:50:17

回答

0

GOT IT! 抱歉打擾你們......我犯了一個愚蠢的錯誤。

代碼行:$result_row = oci_fetch_array($s, OCI_BOTH)正在兩個代碼中執行。但在第二種情況下$result_row[0]返回的值爲$result_row[0]在第一種情況下失敗。

這又是因爲我使用了不同的取數據模式。第一種情況爲OCI_ASSOC,第二種情況爲OCI_BOTH。

因此,最後當我寫了$result_row['ID'],我得到了預期的結果。

乾杯!