1

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

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;
}

这是测试

$data = new Db();
$data->connect(HOST, USER, DB, PASSWORD);
echo $data->selectItems("comments");
$data->closeDb();

这是输出

/*
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
*/
4

2 回答 2

1

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

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

$result = mysql_fetch_array($select_resource,MYSQL_ASSOC);

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

于 2013-08-30T02:09:06.803 回答
0

这条线很关键$result = mysql_fetch_array($select_resource);

你可以使用mysql_fetch_assoc($select_resource),就是这样。

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

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

于 2013-08-30T02:15:31.097 回答