2013-04-09 50 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