0

私は PHP アプリケーションに取り組んでおり、article というテーブルからすべてのデータを取得して画面に表示しようとしています。以下のように、2 つのサンプル エントリを挿入しました。

SQL result

Host: localhost
Database: samples
Generation Time: Oct 28, 2013 at 09:04 PM
Generated by: phpMyAdmin 4.0.8 / MySQL 5.5.30-log
SQL query: SELECT * FROM `articles` LIMIT 0, 30 ;
Rows: 2

article_id    article_title   article_content article_timestamp   
3 Sample title    Text    0
4 Title   Content 1234567

エラーの原因となるコードは次のとおりです。小さなデバッグ プリントが含まれています。

<?php
class Article {
    public function fetch_all() {
        global $pdo;
        $query = "Select * from articles";
        $result = mysql_query($query);
        $res_array = mysql_fetch_array($result);
        foreach ($res_array as $x) {
            echo $x;
            echo "............";
        }
    }
}?>

2 つのエントリを取得する代わりに、最初の 1 つだけを取得します...ダブルで。より正確には:

3…………3…………サンプルタイトル…………サンプルタイトル………… ....テキスト..........テキスト........0........0...... ……

ここで何が間違っているのかわかりません。誰かがヒントを与えることができますか?

4

3 に答える 3

3

これは私が過去に使用したものです:

<?php
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
  foreach ($row as $x) {
    // ...
  }
}
?>

これにより、各行が順番に取得され、ループして結果が出力されます。

を使用mysql_fetch_assocすると、連想配列のみが返され、配列内の重複する値が減少します。

于 2013-10-28T21:14:12.910 に答える
0

PHP マニュアル:

mysql_fetch_array(resource $result [, int $result_type = MYSQL_BOTH ])

フェッチされた行に対応する文字列の配列を返します。それ以上行がない場合は FALSE を返します。返される配列の型は、result_type の定義方法によって異なります。MYSQL_BOTH (デフォルト) を使用すると、連想インデックスと数値インデックスの両方を持つ配列が得られます。MYSQL_ASSOC を使用すると、連想インデックスのみが取得され (mysql_fetch_assoc() が機能するため)、MYSQL_NUM を使用すると、数値インデックスのみが取得されます (mysql_fetch_row() が機能するため)。

だからあなたはこれを書くべきです:mysql_fetch_array($result, MYSQL_ASSOC)

于 2013-10-28T21:17:18.967 に答える