У меня есть 2 таблицы в Oracle db.
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']).')';
Это даст вам запрос типа: "SELECT * FROM t_master_cp WHERE cp_id IN (1,2,3)"
Надеюсь, это сработает для вас.