首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql的输出加倍。我想知道我做错了什么

mysql的输出加倍。我想知道我做错了什么
EN

Stack Overflow用户
提问于 2013-08-30 10:06:03
回答 2查看 110关注 0票数 1

我从mysql得到了双倍的输出。我将一个资源用于列,另一个用于行,以及一个for循环。

代码语言:javascript
复制
function selectItems($table)
{
    $resultado='';
    $select_resource = mysql_query("SELECT * FROM ".$table);
    $num_rows = mysql_num_fields($select_resource);

    for($i=0;$i<$num_rows;$i++){
        $result = mysql_fetch_array($select_resource);  

        foreach($result as $key=>$var)
        {
            $resultado .="$key: $var<br/>\n";
        }

        $resultado .="<hr />";
    }
    return $resultado;
}

这就是测试

代码语言:javascript
复制
$data = new Db();
$data->connect(HOST, USER, DB, PASSWORD);
echo $data->selectItems("comments");
$data->closeDb();

这是输出

代码语言:javascript
复制
/*
0: 1
id: 1
1: name
username: name
2: Content
comment: Content
3: 000.000.000.000
ip: 000.000.000.000
4: It’s impressive how popular content management i
title: It’s impressive how popular content management i
5: freemind
avatar: freemind
*/
EN

回答 2

Stack Overflow用户

发布于 2013-08-30 10:09:07

根据docs,缺省值是同时获取数字数组和关联数组。

如果您只想要其中的一个,请向mysql_fetch_array()调用添加第二个参数,例如:

代码语言:javascript
复制
$result = mysql_fetch_array($select_resource,MYSQL_ASSOC);

请注意,您实际上是在num_rows变量中存储列数。您应该使用mysql_num_rows()

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 10:15:31

这一行是至关重要的$result = mysql_fetch_array($select_resource);

您可以使用mysql_fetch_assoc($select_resource),仅此而已。

另一件事是mysql_num_rows会更合适。它会提取所有的数据。遗憾的是,在您的情况下,它将缺少一条记录。

我建议您切换到MySQLi,当然也就是PDO,但在您的情况下,这是一个正确的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18523803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档