Php Mysql结果数组搜索
我在bd上看到了这个专栏Php Mysql结果数组搜索,php,mysql,Php,Mysql,我在bd上看到了这个专栏 $result = mysql_query("SELECT short FROM textos"); 我试图根据它返回的数组只回显其中一个结果: $col = mysql_fetch_assoc($result); echo "<b>Short:</b>".$col[1]."<br/>"; $col=mysql\u fetch\u assoc($result); echo“Short:”.$col[1]。“”; 显然,这个$c
$result = mysql_query("SELECT short FROM textos");
我试图根据它返回的数组只回显其中一个结果:
$col = mysql_fetch_assoc($result);
echo "<b>Short:</b>".$col[1]."<br/>";
$col=mysql\u fetch\u assoc($result);
echo“Short:”.$col[1]。“
”;
显然,这个$col数组不能通过这种方式访问。应该怎么做?感谢访问第一个元素,请使用
$col[0]['short']
如果您只想以任何方式输出一个元素,您可以向MySQL查询添加
LIMIT 1
。查询后,您应该检查结果数组是否已设置,否则php将抛出一个错误,说明未设置
$col[0]['short']
。要访问第一个元素,请使用$col[0]['short']
如果您只想以任何方式输出一个元素,您可以向MySQL查询添加
LIMIT 1
。在查询之后,您应该检查结果数组是否已设置,否则php将抛出一个错误,说明未设置
$col[0]['short']]
。这已经在上面的注释中说明过了,所以这里只做一点解释
mysql\u fetch\u assoc
为您检索一个显示为关联数组的结果行(其中键是字段名,值是字段值)。您的查询只返回一个字段(即short
),但它仍然不会使您的行成为单个标量值—它仍然是一个数组,只有一个元素
因此,您需要将其称为$row['short']
,或者在示例中称为$col['short']
请记住,查询可能不会返回任何结果-您可以通过检查返回的值是否不是数组而是标量false
,了解到这一点,例如
if ($col === false) {
echo 'Error occured<br/>';
} else {
echo "<b>Short:</b>".$col['short']."<br/>";
}
if($col==false){
echo“出现错误
”;
}否则{
echo“Short:.$col['Short'].“
”;
}
将
LIMIT
像注释建议的那样放入查询也是一个好主意,因为当您实际上只需要一行数据时,您不会返回潜在的大量数据。尽管如此,结果仍然是一个多维数组,因此该部分不会改变。这已经在上面的评论中说明过,所以这里只做一点解释
mysql\u fetch\u assoc
为您检索一个显示为关联数组的结果行(其中键是字段名,值是字段值)。您的查询只返回一个字段(即short
),但它仍然不会使您的行成为单个标量值—它仍然是一个数组,只有一个元素
因此,您需要将其称为$row['short']
,或者在示例中称为$col['short']
请记住,查询可能不会返回任何结果-您可以通过检查返回的值是否不是数组而是标量false
,了解到这一点,例如
if ($col === false) {
echo 'Error occured<br/>';
} else {
echo "<b>Short:</b>".$col['short']."<br/>";
}
if($col==false){
echo“出现错误
”;
}否则{
echo“Short:.$col['Short'].“
”;
}
将
LIMIT
像注释建议的那样放入查询也是一个好主意,因为当您实际上只需要一行数据时,您不会返回潜在的大量数据。尽管如此,结果仍然是一个多维数组,因此该部分不会改变。有三个mysql_fetch函数用于获取行:
- mysql\u fetch\u array()获取一个包含两个索引(数字和关联)的数组
- mysql\u fetch\u num()获取具有数字索引的数组
- mysql\u fetch\u assoc()获取具有关联索引的数组
$statement='selectshortfromtextos';
$result=mysql\u result($statement);
如果($结果){
while($row=mysql\u fetch\u assoc($result)){
var_dump($row);//或echo“Short:”$row['Short']。“
”或您希望对上述语句的行执行的其他操作
}
}
有三个mysql\u获取函数用于获取行:
- mysql\u fetch\u array()获取一个包含两个索引(数字和关联)的数组
- mysql\u fetch\u num()获取具有数字索引的数组
- mysql\u fetch\u assoc()获取具有关联索引的数组
$statement='selectshortfromtextos';
$result=mysql\u result($statement);
如果($结果){
while($row=mysql\u fetch\u assoc($result)){
var_dump($row);//或echo“Short:”$row['Short']。“
”或您希望对上述语句的行执行的其他操作
}
}
$col[0]['short'],您可以在查询中添加LIMIT 1
,您应该检查结果数组是否已设置。看起来您需要的是mysql_fetch_数组:,第一个索引是0,而不是1基本调试已就绪,并将立即显示答案。当你没有得到你想要得到的值,或者没有定义数组键时,用var\u dump($col)
$col[0]['short']检查结构,你可以将LIMIT 1
添加到查询中,你应该检查结果数组是否被设置。看起来你需要用mysql\u fetch\u数组代替:,第一个索引是0,而不是1。基本调试在这里是有序的,并且会立即给出答案。当您没有得到期望得到的值,或者数组键未定义时,请使用var\u dump($col)
检查结构,谢谢!!很好的解释。但我最终得到了一个错误:未定义offet:0。我运行了var_dump,得到了数组中想要的文本,但为了响应它,我遇到了这个问题。你知道为什么吗?嗯?我可能已经老了,但是iirc mysql_fetch_assoc得到的是一行(带有关联索引),而不是一个行数组。iRas,是的,你完全正确!我现在为答案被接受而感到羞愧。我现在就编辑。安德烈,我已经编辑了我的答案-对不起,