2013-01-15 159 views
1

我无法从MySQL查询返回的数组中获取值。从mysql_fetch_assoc返回并解析结果

正在返回的结果与这些列的表:

|team_id|name|pos|available| 

有结果中的多行。我需要经过每一行,并将namepos抽取到它们各自的变量中。

这里是我的代码:

$query = sprintf("SELECT * FROM `player_user` WHERE team_id = '$teamID[0]'"); 
    $answer = mysql_query($query); 
    if ($answer === FALSE) 
     die(mysql_error()); 

    while($row = mysql_fetch_assoc($answer)) 
    { 
     $pname = $row['name']; 
     $pos = $row['pos']; 


    ... do something with $pname and $pos 
    } 
+1

不要再使用mysql_函数。他们已被弃用。另外,你的代码有一个可以允许SQL注入的缺陷。并且不要在生产代码中使用'SELECT *'。只是想在人们冷落你之前说出所有的话。 – siride

+0

只需注意,不推荐使用'mysql_query',就像'mysql_fetch_assoc'一样。你应该考虑使用别的东西,比如'MySQLi'或'PDO_MySQL'(http://php.net/manual/en/function.mysql-query.php) – Charles

+0

另外,什么是实际问题? '$ pname'和'$ pos'是空白的吗?你是否收到MySQL错误? – siride

回答

0

上面的例子应该工作,只要MySQL查询将返回的数据。您应该在循环内使用var_dump($row);来验证这一点。

尽管您应该使用mysqli扩展名或PDO来访问mysql数据库。您目前使用的mysql_ *函数已被弃用,并且一旦从PHP中删除,您将应该使用mysqli_fetch_array而不是mysql_fetch_assoc来使用PHP

-1

。这应该会返回你想要的结果。

http://php.net/manual/en/mysqli-result.fetch-array.php

+1

尽管mysqli是一个好主意,但实际上加载一行简单的数据没有任何关于mysql_的问题。 – siride

+0

如果您希望PHP软件与未来版本兼容,那么mysqli是更好的选择。 MYSQLI具有面向对象的接口,而MYSQL函数不具有。尽管仍然有程序正在使用非OOP程序编写,但最佳做法是使用较新的内容并学习新技术。 – Taicho

+0

我不会不同意mysqli,但问题不在于mysql与mysqli,而在于其他方面。 – siride