我在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)"
希望这对你有用。