簡體   English   中英

mysql的雙重輸出。 我想知道我做錯了什么

[英]Double output from mysql. I wonder what I am doing wrong

我從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
*/

根據docs ,默認值是同時獲取數字數組和關聯數組。

如果只需要它們之一,則在您的mysql_fetch_array()調用中添加第二個參數,例如:

$result = mysql_fetch_array($select_resource,MYSQL_ASSOC);

請注意,您實際上是在num_rows變量中存儲數。 您應該使用mysql_num_rows()

這行至關重要。 $result = mysql_fetch_array($select_resource);

您可以使用mysql_fetch_assoc($select_resource)就是這樣。

另一件事是mysql_num_rows更合適。 它將提取所有數據。 可悲的是,您的情況將缺少一項記錄。

我建議您當然要切換到MySQLi或PDO,但是對於您而言,這是正確的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM