MySQL查询结果的第一行未显示

Mar*_*arc 3 php mysql

以下PHP代码工作正常,尽管一个非常奇怪的行为.第一项始终被排除在外.让我用一个例子说清楚.想象一下,我在db中为srl_loc列提供了以下项目:

  • 巴黎(75)
  • 巴黎(75001)
  • 巴黎(75002)
  • 巴黎(75003)

如果$ term ="Paris",那么第一个项目"Paris(75)"将被省略输出.php文件只显示以下内容:

  • 巴黎(75001)
  • 巴黎(75002)
  • 巴黎(75003)

希望有人能提供帮助.提前感谢您的回复.干杯.渣.

我的PHP:

<?php
header('Content-Type: text/html; charset=utf-8');
require("../inc/connect.inc.php");
mysql_set_charset('utf8'); 

$term = mysql_real_escape_string($_GET['term']);
$result = mysql_query('SELECT * FROM search_loc WHERE srl_loc LIKE "' . $term . '%"');

$row=mysql_fetch_assoc($result);

$return = array();
while($row=mysql_fetch_assoc($result)){
    array_push($return,array('value'=>$row['srl_loc']));}

echo(json_encode($return));
?>
Run Code Online (Sandbox Code Playgroud)

小智 12

你在$ return =之前调用mysql_fetch_assoc两次,然后每次循环调用一次.第一个被丢弃,因此丢失了一行.

所以,它应该是:

<?php
header('Content-Type: text/html; charset=utf-8');
require("../inc/connect.inc.php");
mysql_set_charset('utf8'); 

$term = mysql_real_escape_string($_GET['term']);
$result = mysql_query('SELECT * FROM search_loc WHERE srl_loc LIKE "' . $term . '%"');

$return = array();
while($row=mysql_fetch_assoc($result)){
    array_push($return,array('value'=>$row['srl_loc']));}

echo(json_encode($return));
?>
Run Code Online (Sandbox Code Playgroud)