0

我在这个 bd 中得到这个专栏

$result = mysql_query("SELECT short FROM textos");

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

$col = mysql_fetch_assoc($result);

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

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

4

3 回答 3

1

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

于 2012-11-17T22:17:32.027 回答
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查询放入您的查询也是一个好主意,因为当您实际上只需要一行时,您不会返回潜在的大量数据。结果仍然会以多维数组的形式出现,因此该部分不会改变。

于 2012-11-17T22:17:53.800 回答
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
    }
}
于 2012-11-17T23:15:04.973 回答