2012-02-16 27 views
3

儘管有一個非常奇怪的行爲,但以下php代碼仍可正常工作。第一個項目總是被忽略。讓我以一個例子來說明問題。想象一下,我在我的分貝以下項目的列srl_loc:不顯示MySQL查詢結果的第一行

  • 巴黎(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)); 
?> 

回答

12

要調用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)); 
?> 
+0

Hello jka!它像一個魅力,感謝你!你搖滾:)謝謝... – Marc 2012-02-16 20:09:45

+0

謝謝...它真的幫了我很多.... = D – mmr 2013-08-14 09:45:21

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

你打電話

$row=mysql_fetch_assoc($result); 

你開始

遍歷記錄之前
while($row=mysql_fetch_assoc($result)){ 
    array_push($return,array('value'=>$row['srl_loc']));} 

這就是你正在閱讀並丟棄結果集中第一條記錄的地方