PHP 预言机基于表中的数组数据查询数据


PHP Oracle Query Data Based On Array Data in Table

我在Oracle db中有2个表。

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...

试试

$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']).')';

这将为您提供如下查询:"从 cp_id t_master_cp 中选择 *(1,2,3)"

希望这对你有用。