2014-01-06 56 views
-1

我对PHP很新,我意识到我有很多东西需要学习,特别是关于SQL注入攻击和新的php 5.5的东西。从列中返回结果到数组

但是,虽然我正在学习,我尝试玩一下,实验,我遇到了一个问题。我需要将我的查询的一列(team_name)的所有结果放入一个数组(零索引会更容易),以便我可以将这些结果放入foreach循环中以创建一个夹具列表。例如 - 这是我愿意做的数据...

foreach ($teams as $team) { 
    foreach ($teams as $opposition) { 
     if ($team != $opposition) { 
      echo "$team versus $opposition"; 
     } 
    } 
} 

所以我的SQL查询如下什么...

$query="select * from pool_a"; 
$result=mysql_query($query); 
$num=mysql_num_rows($result); 

然后,我可以很容易地将数据输出我寻找如下;

echo "<table>"; 
for ($i=0;$i<$num;$i++) { 
    $teams=mysql_result($result,$i,'team_name'); 
     echo "<tr><td>$teams</tr>"; 
} 
echo "</table>"; 

但我不能做的是将数据获取到数组中。我认为从上面的msql_query返回的数据总是以数组形式返回,无论结果的数量如何,但是如果我在$ teams上运行is_array()检查,它将返回false。

我已经尝试过使用爆炸(在每个团队名称后面添加逗号并修剪最后一个关闭之后),然后使用foreach循环但它只返回与索引[0]关联的值。我应该在这里补充一点,尽管关键字是0,但我得到的实际值是列表中的最后一个,如上所述,我也不明白。

任何帮助将不胜感激。

感谢

+0

$ result_array = mysql_fetch_array($ result); – raygo

+0

是否会在现有查询下替换某些内容或添加的代码行?谢谢 – DJC

+0

使用'mysql_ *'函数是非常不鼓励的。您应该尽快开始使用MySQLi或PDO进行与数据库相关的任务。 – Aborted

回答

3
$team_names = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $team_names[] = $row['team_name']; 
} 

mysql_fetch_assocmysql_fetch_rowmysql_fetch_array都返回一行作为数组(他们它是如何索引的不同)。但是mysql_result只是返回结果中的单个项目,所以它不返回数组。

你可以做同样的事情与上面的使用mysql_result,但你仍必须将它们推到结果数组自己:

for ($i=0;$i<$num;$i++) { 
    $team=mysql_result($result,$i,'team_name'); 
    $team_names[] = $team; 
} 
0

而不是使用mysql_result尝试使用mysql_fetch_array($结果,MYSQL_ASSOC )

这个函数会给你一个数组,不管你的结果是MySQL。

+0

但它返回一行,而不是一列。正如我的回答所显示的,他仍然需要将他们收集到一个阵列中。 – Barmar

1

要得到查询结果到一个数组,你可以这样做

$query="select * from pool_a"; 
$result=mysql_query($query); 
$result_arr = mysql_fetch_array($result); 
$num=mysql_num_rows($result); 

但是,考虑使用PDO驱动程序连接到数据库。它远远优于程序化,并且它更安全,因为“预备状态”将有助于保护您免受注入攻击。您正在使用的方法已被弃用。

+0

谢谢你。阅读或了解PDO驱动程序和准备报表的最佳位置在哪里?我认为我的书有点过时了! – DJC

+0

网上有很多资源只是Google搜索而已。不过,我会在这里有点偏见,并建议你去一个体面的框架。 我推荐Laravel。它的入门门槛低,是一个很棒的社区,它是GitHub上最受欢迎的PHP项目(它只有3年历史)。文档很好,你可以从代码中学到很多东西。许多人也写过这方面的书。我不建议你坚持Laravel,但是作为一名PHP开发人员来说,这是一个很好的起点。 – thefuzzy0ne