我使用PHP脚本从数据库中提取注释来填充应用程序。数据库的设置方式是,任何次要评论(即回复评论)都将有一个reply_id。我看到的问题是,所有的评论,无论是回复,都看到了与拥有它的评论相同的回复。我试图删除其中包含次要评论的数组,但没有成功。有人能指出我在哪里没能把价值分开吗?
// Create connection
$conn = mysqli_connect($servername, $username, $password,$db);
// Check connection
if ($conn->connect_error)
die("Connection failed: " . $conn->connect_error);
$memory_id=$_POST['memory_id'];
$query ="Select * FROM comment WHERE memory_id= '$memory_id' and reply_id=''";
$dbquery = mysqli_query($conn,$query);
$query2= "Select * FROM comment WHERE memory_id='$memory_id' and reply_id='$comment_id'";
if($dbquery){
$result = array();
while($row = mysqli_fetch_array($dbquery))
{
$temp_array= array();
unset($temp_array['replys']);
$temp_array['user_id']=$row['user_id'];
$temp_array['comment_id']=$row['comment_id'];
$temp_array['text']=$row['comment'];
$comment_id= $row['comment_id'];
$temp_array['replys']=array();
$dbquery2 = mysqli_query($conn,$query2);
if($dbquery2){
while ($row2 = mysqli_fetch_array($dbquery2)){
$temp_array['replys'][]=array(
'user_id'=>$row2['user_id'],
'comment_id'=>$row2['comment_id'],
'text'=>$row2['comment']);
}//Feeds comments
array_push($result, $temp_array);
}
}//pulls initial command
echo json_encode($result);
}
else
{
$response["error"] = TRUE;
$response["error_msg"] = "No memory FOund";
echo json_encode($response);
}
?>
正在执行第二个查询,其中$memory_id
的值为$_POST['memory_id']
。一个简单的解决方案是将$query2
行移到$memory_id = $row['memory_id']
下方,这样第二个查询将使用正确的memory_id
值执行。
编辑更好的解决方案是准备查询。检查mysqli_prepare函数。