以下PHP代码工作正常,尽管一个非常奇怪的行为。第一项始终被排除在外。让我用一个例子说清楚。想象一下,我在我的数据库中为列srl_loc提供了以下项目:
如果$ term =“Paris”,那么第一项“Paris(75)”将被省略输出。 php文件只显示以下内容:
希望有人可以提供帮助。提前感谢您的回复。干杯。马克。
我的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));
?>
答案 0 :(得分:12)
你正在调用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));
?>
答案 1 :(得分:1)
取出第一个$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));
?>
答案 2 :(得分:1)
你正在打电话
$row=mysql_fetch_assoc($result);
在使用开始循环记录之前
while($row=mysql_fetch_assoc($result)){
array_push($return,array('value'=>$row['srl_loc']));}
这就是你正在阅读并丢弃结果集中第一条记录的地方