2011-02-07 43 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'],我得到了预期的结果。

干杯!