嗨,我在分离查询时遇到了问题,你会看到这是我的代码,我从数据库中提取警报,这就是该字段的名称,只有 3 个选项“警报”、“警告”和“两者” “当我提取它显示的查询时,您只能在记录中插入一个;
警报警告
我希望它像这样显示;
警报,警告
(用逗号)我已经试过了implode
,但我做错了,结果是这样的;
警报警告,警报警告。
$sql = "SELECT *
FROM notificaciones
WHERE idDepto = " .$_POST['id_depto']."";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{// Datos obtenidos de la consulta
while($row = $result->fetch_assoc())
{
$noti = $row["Notificacion"]; //Nombre de notificacion Alarma/ Aviso / Ambas
$verialarma = $noti;
echo $verialarma;
} else {
echo "0 resultados"; //Validacion
}
$conn->close();
我没有看到你的完整代码,比如while 结束在哪里?而且我不知道$noti是否正在返回您正在寻找的数组
但是假设您已经得到了结果:AlarmaViso,这表明您正在使用没有字符的 implode 来连接您的情况下的元素,逗号 (",")
语法:implode (string $glue, array $array); 从PHP 手册获得
最后,您只需通过以下方式加入您的链:
可以实现的是将“,”连接到查询为您带来的每个元素,如下所示:
您能否进行测试并告诉我它是否适合您,因为我的机器上没有安装 PHP,所以我无法进行测试。有任何疑问,我们可以检查一下。
据我了解,您需要的是,当您恢复
AlarmaAviso
时,它会以这种方式放置Alarma,Aviso
。为此,您可以使用
preg_replace
PHP 函数。有了它,通过正则表达式,您可以检测大写字母并在它们前面插入逗号。稍后,您可以使用该函数ltrim
删除已插入字符串第一个单词前面的逗号。例子:
演示。
我认为您可以使用
GROUP_CONCAT
.你没有很好地解释上下文。但是,如果通知发生在部门 1 中
Alarma
并且它们Aviso
存在于表的不同行中,GROUP_CONCAT
则它允许您获取单行结果,其中包含根据应用于查询的条件发生的所有通知。也就是说,如果您在查询中放置 a
WHERE dpto_id=1
然后应用 aGROUP BY dpto_id
,它将GROUP_CONCAT
返回由您指定的分隔符分隔的单行,并按每个部门分组。当然,可以添加更多的标准,无论是WHERE
在GROUP BY
.Código:
Ver Demo
Resultado:
安全说明: 您的问题中使用的代码容易受到 SQL 注入的影响。建议使用准备好的查询,例如:
单独传递字段的值
dpto_id
,避免SQL 注入。