Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于条件的PHP设置变量_Php_Oracle - Fatal编程技术网

基于条件的PHP设置变量

基于条件的PHP设置变量,php,oracle,Php,Oracle,如果这篇文章的标题与我下面的问题无关,我很抱歉。我不知道怎么给它 示例我有以下数据表: DEPARTMENT_ID_FK | EMAIL_ADDRESS 001 | a@example.com 002 | b@example.com 001 | c@example.com 当我查询时,是否可以这样设置: 如果是相同的部门ID\u FK,则根据部门ID\u FK将其显示为变量合并值 while($dData = oci

如果这篇文章的标题与我下面的问题无关,我很抱歉。我不知道怎么给它

示例我有以下数据表:

DEPARTMENT_ID_FK | EMAIL_ADDRESS
001              | a@example.com
002              | b@example.com
001              | c@example.com
当我查询时,是否可以这样设置:
如果是相同的部门ID\u FK,则根据部门ID\u FK将其显示为变量合并值

while($dData = oci_fetch_array($q))
{
     $email = $dData['EMAIL_ADDRESS']; // I know when I echoing this variable, it will be like : a@example.comb@example.comc@example.com
}
我想要的是循环,我们可以知道:

DEPARTMENT_ID_FK | EMAIL_ADDRESS
001              | a@example.com, c@example.com
002              | b@example.com

任何帮助都将不胜感激。

您可以让Oracle为您进行聚合

甲骨文11

选择部门ID\u FK,
Listag(电子邮件地址,,)
组内(通过电子邮件地址订购)作为电子邮件地址
来自表1
按部门分组\u ID\u FK
甲骨文10

选择部门ID\u FK,
RTRIM(XMLAGG(xmlement(e,电子邮件地址,,)
按电子邮件地址排序)。提取(“//text()”).GETCLOBVAL(),“,”)作为电子邮件地址
来自表1
按部门分组\u ID\u FK
下面是两个查询的演示

结果:

DEPARTMENT_ID_FK | EMAIL_ADDRESS -----------------+---------------------------- 001 | a@example.com,c@example.com 002 | b@example.com -----------------+----------------------------

结果:

Array ( [0] => Array ( [DEPARTMENT_ID_FK] => 001 [EMAIL_ADDRESS] => a@example.com,c@example.com ) [1] => Array ( [DEPARTMENT_ID_FK] => 002 [EMAIL_ADDRESS] => a@example.com ) ) 大堆 ( [0]=>阵列 ( [部门ID\U FK]=>001 [电子邮件地址]=>a@example.com,c@example.com ) [1] =>阵列 ( [部门ID\U FK]=>002 [电子邮件地址]=>a@example.com ) )
实现目标的简单方法

$email=array();
而($dData=oci\u fetch\u数组($q)){
$email[$dData['DEPARTMENT\u ID\u FK']=(isset($email[$dData['DEPARTMENT\u ID\u FK'])和&$email[$dData['DEPARTMENT\u ID\u FK']]!=”,:”)$dData['email\u ADDRESS';
}
foreach($key=>$val的电子邮件){
回显$key.'=>'.$val;

}

嗨,彼得,谢谢你的回答,但我得到了如下错误:ORA-00923:FROM关键字未在预期位置找到。我在用Toada你到底在用什么版本的Oracle?您是否更改了表名?我使用的是Oracle 10.0.2.5,是的,我已更改了表名
listag
自11gR2起可用。您可以在Oracle 10中使用
XMLAGG
。查看更新的答案。我试图运行查询,但出现以下错误:ORA-24813:无法发送或接收不受支持的LOB。请帮助彼得