我正在使用 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);
}
?>
最佳答案
第二个查询正在使用值为 $_POST['memory_id']
的 $memory_id
执行。一个简单的解决方案是将 $query2
行移到 $memory_id = $row['memory_id']
下面,这样第二个查询将使用正确的 执行memory_id
值。
编辑 更好的解决方案是准备查询。检查mysqli_prepare功能。
关于php - 使用 Php 从 MYSQL 数据库中提取注释导致意外的 JSON 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538246/