-1

无论如何要返回一个与获取的行一一对应的字符串数组?

基本上,如果我想从我的数据库中检索所有行,我会这样做:

$.post('my_script.php', {id:id}, function(data){
  $('#container').html(data);
});

my_script.php

<?php
  $id = $_POST['id'];
  $query = "SELECT image_name FROM my_list WHERE id=$id";

  if($mysql_query = mysql_query($query)){
      while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query)){
           $mysql_result_name = $mysql_fetch_assoc['image_name'];
           echo "<img src='".$mysql_result_name."'/>";
}
}
?>

问题是,只要这个语句 (while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query))) 没有完成,它就会显示几秒钟的空白页。这对用户来说肯定是不利的。如果它们已准备好显示,我至少希望一张一张地显示图像。

4

1 回答 1

1

这基本上是不可能的,因为 PHP 是一种服务器端语言,因此当它完成脚本时数据是可用的。

所以你不能做这样的事情,必须等到脚本完成

或者您可以设置 AJAX 以便它逐一检索行,这就是我现在想到的解决方案。

编辑:

作为更好的解决方案,您可以将 a 添加flush()到您的末尾,while以便在图像准备好时打印图像,但这不是 100% 的解决方案。它可能会或可能不会工作,具体取决于您的服务器和您从中调用 PHP 页面的方法。例如,使用 AJAX,您的success函数将不会被调用,直到它收到200 OK来自服务器的响应,该响应是在页面完全加载时发送的。

编辑代码:

<?php
  $id = $_POST['id'];
  $query = "SELECT image_name FROM my_list WHERE id=id";

  if($mysql_query = mysql_query($query)){
      while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query)){
           $mysql_result_name = $mysql_fetch_assoc['image_name'];
           echo "<img src='".$mysql_result_name."'/>";
           flush();
}
}
?>
于 2013-06-02T14:05:57.230 回答