Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
返回具有相同id的多行PHP查询_Php_Sql Server 2008_Ssms - Fatal编程技术网

返回具有相同id的多行PHP查询

返回具有相同id的多行PHP查询,php,sql-server-2008,ssms,Php,Sql Server 2008,Ssms,我试图让页面显示所有与页面相关的评论。但是,它只返回列表中的第一条注释 $commentIdQuery = "SELECT commentid FROM COMMENT_RECIPE WHERE RecipeID = '$recipeID[0]'"; $CID = mssql_query($commentIdQuery, $connection); $commentID = mssql_fetch_row($CID); $commentQuery = "SELECT UserID, Rating

我试图让页面显示所有与页面相关的评论。但是,它只返回列表中的第一条注释

$commentIdQuery = "SELECT commentid FROM COMMENT_RECIPE WHERE RecipeID = '$recipeID[0]'";
$CID = mssql_query($commentIdQuery, $connection);
$commentID = mssql_fetch_row($CID);
$commentQuery = "SELECT UserID, Rating, Comment FROM COMMENTS WHERE CommentID = '$commentID[0]'";
然后把它打印出来

    while($row = mssql_fetch_row($commentQuery)){   
echo "<td> $row[0] $row[1] $row[2]<br><br></td>";           
}   
尝试合并两个查询-

$query = "SELECT COMMENTS.UserId, COMMENT.Rating, COMMENT.Comment,
          COMMENT_RECIPE.commentid
          FROM COMMENT INNER JOIN COMMENT_RECIPE ON
          COMMENT.CommentID = COMMENT_RECIPE.commentid
          WHERE COMMENT_RECIPE.RecipeID = '$recipeID[0]'
         "; 
$execute = mssql_query($query, $connection);

echo "<table>";
echo "<tr>
      <th>User Id</th>
      <th>Rating</th>
      <th>Comments</th>
      </tr>";
while($row = mssql_fetch_row($execute))
{
     echo "<tr>
      <td>$row[0]</td>
      <td>$row[1]</td>
      <td>$row[2]</td>
      </tr>";         
}
echo "</table>";

看起来您真的应该将两个查询合并到一个查询中。它是只显示一条注释,还是显示多条相同的注释?我不确定数据库是如何设置的,但我认为CommentID实际上是每个注释的唯一ID。如果是这样的话,在您的第一次查询中,您只会得到一个CommentID,因为您只需将返回的第一个CommentID分配给$CommentID,而不是在结果中循环,然后查询该结果当然只会返回一行。它只显示第一个注释,我想我需要在某个地方进行while循环,我是否必须将$commentID放入循环中?我认为您应该这样做,然后遍历整个结果集:选择UserID、Rating、Comment FROM COMMENTS internal JOIN Comment_RECIPE ON COMMENTS.commentID=Comment_RECIPE.commentID,其中RecipeID=“$RecipeID[0]”,而$row=mssql_fetch_row$execute{echo$row['UserId']$row['Rating']$row['Comment'];}完全中断!!现在它有了所有的开始和结束标记。即使我尝试回显静态输出,它也会中断,如果我将循环留空,它至少会加载页面