2013-04-09 47 views
0

我有這樣的代碼:mysql_fetch_assoc失去了一個價值

function get_team_a($id_team){ 
    $result = mysql_query("SELECT * FROM `table1` WHERE `id` = '{$id_team}'"); 
    return mysql_fetch_assoc($result); 
} 

在表中我有3列:

ppl op id 
10 23 1006 
6 21 1005 
11 15 1004 

但是,當我這樣做:

$team_zgl= get_team_a($team_id); 
<br><b>'.$team_zgl['id'].' </b> 

我什麼都沒有,但這個作品:

<br><b>'.$team_zgl['op'].' </b> 
<br><b>'.$team_zgl['ppl'].' </b> 

什麼?!

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-04-09 19:55:01

+1

你爲什麼不嘗試做'$ team_zgl'的'var_dump'? – Kermit 2013-04-09 19:55:55

+0

明顯的問題。這張桌子裏有一個「id」字段嗎? – 2013-04-09 19:57:05

回答

1

mysql_fetch_assoc()一次只取一行。

$rows = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $rows[] = $row; 
} 
return $rows; 

這將返回一個多維數組的行,然後您可以迭代。

如果連一行都沒有被返回,那麼您的查詢中可能有語法錯誤。


您的代碼很容易被注入。你應該使用正確的參數化查詢與PDO/mysqli

+0

'{$ id_team}'有什麼意義?它不應該像只是$ id_team? (如果它是一個INT) – bestprogrammerintheworld 2013-04-09 19:59:21

+0

@bestprogrammerintheworld'{$ id_team}'是有效的PHP字符串變量插值語法 – 2013-04-09 20:11:56

+0

在猜測我會說只有一行id ='something' – James 2013-04-09 20:17:22