Mysql结果数组搜索

时间:2012-11-17 22:07:32

标签: php mysql

我在这个bd

中收到了这个专栏
$result = mysql_query("SELECT short FROM textos");

我试图只回显一个基于它返回的数组的结果:

$col = mysql_fetch_assoc($result);

echo "<b>Short:</b>".$col[1]."<br/>";

显然这个$ col数组不能以这种方式访问​​。应该怎么做?感谢

3 个答案:

答案 0 :(得分:1)

要访问第一个元素,请使用$col[0]['short'] 如果您只想输出一个元素,可以将LIMIT 1添加到MySQL查询中 在查询之后你应该检查是否设置了结果数组,否则php会抛出错误,说明$col[0]['short']没有设置。

答案 1 :(得分:1)

上面的评论已经说明了这一点,所以这里只是一些解释。

mysql_fetch_assoc检索一个结果行,表示为关联数组(键是字段名称,值是字段值的数组)。您的查询只返回一个字段(short),但它仍然不会使您的行成为单个标量值 - 它仍然是一个数组,只有一个元素。

因此,您需要将其引用为$row['short']或样本$col['short']

请记住,查询可能不会返回任何结果 - 您可以通过检查返回的值是否不是数组而不是标量false来了解,例如。

if ($col === false) {
    echo 'Error occured<br/>';
} else {
    echo "<b>Short:</b>".$col['short']."<br/>";
}

LIMIT放入您的查询中,就像评论建议一样,这也是一个好主意,因为当您实际只需要一行时,您不会返回潜在的大量数据。结果仍将是一个多维数组,因此该部分不会改变。

答案 2 :(得分:1)

有三个获取行的mysql_fetch函数:

  • mysql_fetch_array()获取包含两个索引的数组(数字和关联)
  • mysql_fetch_num()获取带有数字索引的数组
  • mysql_fetch_assoc()获取带关联索引的数组

在你的例子中,你将得到一个类似于函数mysql_fetch_array()的数组:

array(2) {
  [0]=>
  string(3) "foo"
  ["short"]=>
  string(3) "foo"
}
$statement = 'SELECT short FROM textos';
$result = mysql_result($statement);
if ($result) {
    while ($row = mysql_fetch_assoc($result)) {
        var_dump($row); // or echo "<b>Short:</b>".$row['short']."<br/>"; or something else you like to do with rows of the above statement
    }
}