繁体   English   中英

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

[英]First row from MySQL query result not being displayed

尽管有一种非常奇怪的行为,但以下php代码仍能正常工作。 第一项始终被忽略。 让我用一个例子来阐明。 想象一下,我在数据库中有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));
?>

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

因此,应为:

<?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));
?>

取出第一个$row=mysql_fetch_assoc($result);

<?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));
?>

你在打电话

$row=mysql_fetch_assoc($result); 

在您开始遍历记录之前

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

那就是您要读取并丢弃结果集中的第一条记录的地方

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM