gpt4 book ai didi

php - 从三重内连接获得正确的结果

转载 作者:行者123 更新时间:2023-11-29 22:59:58 25 4
gpt4 key购买 nike

我正在尝试创建一个消息列表,其中每条消息上方都有响应。消息表和响应表通过外部ID连接。保存数据一切正常。我想显示他父亲对自己的消息所附的回复。

它工作正常,直到当我尝试在同一消息父中保存两个响应时,它会使用另一个响应创建另一个消息父,而不是在同一消息中创建两个响应。

这里

function getFormattedDateTime(dateTimeToFormat) {
dateTimeToFormat = new Date(dateTimeToFormat);
var monthOptions = {
month: 'long', year: 'numeric', day: 'numeric',
hour: '2-digit', minute: '2-digit'
};

return dateTimeToFormat.toLocaleTimeString('en-us', monthOptions);

Sql查询:

$totalMensajesR = mysql_num_rows($numMsgRespuesta);
$totalRows = mysql_num_rows($registroTriple);

$registroTriple = mysql_query("SELECT
mensajes.ID as 'm_ID',
mensajes.USER_NAME,
mensajes.CONTENIDO as 'm_CONTENIDO',
mensajes.FECHA as 'm_FECHA',
respuestas.ID as 'r_ID',
respuestas.ID_F as 'r_IDF',
respuestas.USER_NAME as 'r_USERNAME',
respuestas.FECHA as 'r_FECHA',
respuestas.CONTENIDO as 'r_CONTENIDO',
usuarios.ID_USER as 'u_idUSER',
usuarios.USER_NAME,
usuarios.CORREO
FROM mensajes
LEFT OUTER JOIN respuestas ON (respuestas.ID_F = mensajes.ID)
LEFT OUTER JOIN usuarios ON (usuarios.USER_NAME=mensajes.USER_NAME)",$conexion) or die("Problemas en el select:".mysql_error());

我需要展示什么

if ($totalRows!=0){



while ($row= mysql_fetch_assoc($registroTriple))
{
echo "<br />";
echo "<div id='$row[m_ID]' class='borderMensajes'>";
echo "<form name='formulario' action='' onsubmit='enviarDatos(); return false'>";
echo "<img id='imagenUsuario' src='getImageFromUsuarios.php?ID=$row[u_idUSER]'/>";
//echo "<span class='divDin2'>Product: </span>";
echo "<span class='divDin2'>$row[USER_NAME]</span>";
echo "<br/><br/>";
echo "<span class='divDinamico'>Mensaje: </span>";
echo $row["m_CONTENIDO"];
echo "<br/><br/>";
echo "<span class='divDinamico'>Fecha: </span>";
echo $row['m_FECHA'];
echo "<br/>";
echo "<h5></h5>";
echo "<input class='btRespuesta' id='_botonArchivar' onclick='AddResponse($row[m_ID])' name='responder' type='submit' value='Responder'/>";
echo "<div>";
//$row = mysql_fetch_assoc($registroTriple);

if ($row['r_IDF']==$row['m_ID'])
{
echo $row['r_USERNAME'];
echo "<span class='divDinamico'>Mensaje: </span>";
echo $row["r_CONTENIDO"];
echo "<span class='divDinamico'>Fecha: </span>";
echo $row["r_FECHA"];
}

echo "</div>";
echo "<br /><br />";
echo "</form>";
echo "</div>";

}
`

最佳答案

我不知道理解是否正确,但我认为......

您的此查询将为您对同一消息的每个响应生成附加条目 因此,如果消息表上有 1 行,响应表上有 3 行,您将得到 3 行 示例

  Message ID | Response ID |
1 | 1
1 | 2
1 | 3

在您的 php 输出中,我没有看到任何机制来检测和分组响应,因此每个响应都将显示为另一条消息

我认为您必须将三重连接查询分解为 2 个查询,一个用于消息,一个用于响应当您循环消息时,您必须调用响应查询来获取响应

while ($row = mysql_fetch_assoc($sqlMessages)) {

echo 'Message';
echo displayResponses($row['messageId']);
}

function displayResponses($messageId) {

while ($row = mysql_fetch_assoc($sqlResponse)) {

echo $row['response'];
}
}

我希望这有帮助。

关于php - 从三重内连接获得正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28545309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com