0

私は自分のWebサイトにSELECT*FROM...のようなクエリをたくさん書いています。PDOやOOPなどのより高度な手法を使用せずに、より迅速に呼び出すことができるように、これを処理する関数を作成したいと思います。特に配列の結果をループするときに、データベースから取得したデータをどのように呼び出すかについて混乱しています。

私はこのようなものが大好きです:

function selectAll($tableName, $limitAmount) {
    global $dbConnection;
    $query = mysql_query("SELECT * FROM $tableName ORDER BY id LIMIT $limitAmount");
    $row_result = mysql_fetch_assoc($query);
    return $row_result;
}

たくさんのニュース投稿だったとしましょう。典型的な方法の1つで結果をループしたいと思います。

// CALL THE FUNCTION
selectAll('news_table', '10');

// SOMEHOW LOOP THROUGH RESULTS??
do {
    echo "<h2>".$row_result['title']."</h2>";
} while ($row_result = mysql_fetch_assoc($query));

明らかに、これは私が関数の特注の結果をループする方法ではありません。私の機能が正しいかどうかさえわかりません。

どんな助けでも大歓迎です。

編集:関数内で結果を返し、実際の関数を呼び出すのを忘れました。私の悪い。今すぐ更新。

4

1 に答える 1

1

あなたのような機能を持っていても意味がありません。

このようにしてください

function fetchAll($query) {
  $res = mysql_query($query) or trigger_error("db: ".mysql_error()." in ".$query);
  $a   = array();
  if ($res) {
    while($row = mysql_fetch_assoc($res)) $a[]=$row;
  }
  return $a;
}

そしてそれをどんなクエリでも使用します:

$data = fetchAll("SELECT * FROM news_table ORDER BY id LIMIT 10");
foreach ($data as $row) {
    echo $row['title'];
}

SQLクエリはそれ自体が強力なプログラムです。愚かな選択の力を減らさないでください。
SQLを使用してデータ処理ロジックを表し、このヘルパー関数を使用して繰り返しを回避します。

于 2012-05-07T11:03:03.197 に答える