2016-02-18 89 views
1

我在Oracle數據庫中有2個表。PHP基於表中數組數據的Oracle查詢數據

t_master_cp

cp_id | cp_name 
1  | eat 
2  | play 
3  | run 
4  | sleep 

t_choose_cp

form_no | uid | cp_id 
1  | 1 | 3,4 
2  | 2 | 1,3,4 
3  | 3 | 1,2,3 

現在我想將數據查詢到PHP編程,這是我到目前爲止的代碼:

$uid = "1"; 
$q_get_choose_cp = oci_parse($c1, "SELECT * FROM t_choose_cp WHERE uid = '$uid'"); 
oci_execute($q_get_choose_cp); 
$d_get_choose_cp = oci_fetch_array($q_get_choose_cp); 
$get_cp = $d_get_choose_cp['cp_id']; 

$q_data = oci_parse($c1, "SELECT * FROM t_master_cp WHERE cp_id IN '$get_cp'"); 
oci_execute($q_data); 
while($d_data = oci_fetch_array($q_data)) 
{ 
    $get_cp_name = $d_data['cp_name']; 
    ?> 

    <div><?php echo $get_cp_name; ?></div> 
<?php 
} 

當運行查詢,結果爲空並出現錯誤:Warning: oci_execute(): ORA-01722: invalid number in...

回答

0

嘗試

$uid = 1; 
$q_get_choose_cp = oci_parse($c1, "SELECT * FROM t_choose_cp WHERE uid = $uid"); 

無需引用值,如果在你的表中的數據類型是數字。

則:

$get_cp = '('.implode(',',$d_get_choose_cp['cp_id']).')'; 

這會給你喜歡的查詢: 「SELECT * FROM t_master_cp WHERE CP_ID IN(1,2,3)」

希望對你有用。