我是PHP的新手,我意识到我需要学习很多东西,特别是关于SQL注入攻击和新的PHP 5.5 oo的东西。
然而,在我学习的过程中,我试着尝试一下并进行实验,但我遇到了一个问题。我需要将查询的一个列(team_name)的所有结果都放到一个数组中(零索引会更容易),这样我就可以将这些结果放入foreach循环来创建一个fixture列表。例如 - 这就是我想对数据做的...
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。
我尝试过使用explode(在每个团队名称之后添加逗号并修剪掉最后一个名称之后),然后使用foreach循环,但它只返回与索引[0]相关联的值。我应该在这里补充说,虽然键是0,但我得到的实际值是上面回显的列表中的最后一个,我也不明白。
非常感谢任何帮助。
由于
答案 0 :(得分:3)
$team_names = array();
while ($row = mysql_fetch_assoc($result)) {
$team_names[] = $row['team_name'];
}
mysql_fetch_assoc
,mysql_fetch_row
和mysql_fetch_array
都将一行作为数组返回(它们的索引方式不同)。但mysql_result
只返回结果中的单个项,因此它不会返回数组。
您可以使用mysql_result
执行与上述相同的操作,但是您仍然必须自己将它们推送到结果数组中:
for ($i=0;$i<$num;$i++) {
$team=mysql_result($result,$i,'team_name');
$team_names[] = $team;
}
答案 1 :(得分:1)
要将查询结果导入数组,您可以执行此操作
$query="select * from pool_a";
$result=mysql_query($query);
$result_arr = mysql_fetch_array($result);
$num=mysql_num_rows($result);
但是,请考虑使用PDO驱动程序连接到数据库。它远远优于在程序上进行,并且它更安全,因为Prepared Statments将帮助保护您免受注入攻击。您正在使用的方法已弃用。
答案 2 :(得分:0)
而不是使用mysql_result尝试使用mysql_fetch_array($ result,MYSQL_ASSOC)
此函数将为您提供一系列来自MySQL的结果。