我在这个bd
中收到了这个专栏$result = mysql_query("SELECT short FROM textos");
我试图只回显一个基于它返回的数组的结果:
$col = mysql_fetch_assoc($result);
echo "<b>Short:</b>".$col[1]."<br/>";
显然这个$ col数组不能以这种方式访问。应该怎么做?感谢
答案 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()的数组:
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
}
}