我在这个 bd 中得到这个专栏
$result = mysql_query("SELECT short FROM textos");
我试图根据它返回的数组只回显一个结果:
$col = mysql_fetch_assoc($result);
echo "<b>Short:</b>".$col[1]."<br/>";
显然这个 $col 数组不能以这种方式访问。应该怎么做?谢谢
要访问第一个元素,请使用$col[0]['short']
.
如果你只想输出一个元素,你可以添加LIMIT 1
到 MySQL 查询中。
查询后,您应该检查结果数组是否已设置,否则 php 将抛出错误,说明$col[0]['short']
未设置。
这已经在上面的评论中说明了,所以这里只是一点解释。
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
查询放入您的查询也是一个好主意,因为当您实际上只需要一行时,您不会返回潜在的大量数据。结果仍然会以多维数组的形式出现,因此该部分不会改变。
有三个获取行的 mysql_fetch 函数:
在您的示例中,您将获得一个类似于函数 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
}
}