0

私のPHPスクリプトでは、 mysql_query を作成します:

  $full_alarm_sql = "
          SELECT alarms.id, alarms.date, clients.name, clients.number, alarms.controller, alarmstype.type, 
          alarms.alarmstatus, alarms.starttime, alarms.endtime, DATEDIFF(CURDATE(), alarms.date) AS difference
          FROM alarms
          LEFT JOIN clients ON alarms.clientid = clients.id
          LEFT JOIN alarmstype ON alarms.typeid = alarmstype.id
          WHERE DATEDIFF(CURDATE(), alarms.date) <=" . $type . " AND clients.number = " . $market;
  $full_alarm_query = mysql_query($full_alarm_sql);

次に、クエリのフェッチを使用して、テーブル内で while ループを作成します。

while ($full_alarm_fetch = mysql_fetch_array($full_alarm_query)) {
  $content .=
    "
           <tr>
          <td>" . $full_alarm_fetch['date'] . "</td>
          <td>" . $full_alarm_fetch['number'] . " | " . $full_alarm_fetch['name'] . "</td>
          <td>" . $full_alarm_fetch['controller'] . "</td>
          <td>" . $full_alarm_fetch['type'] . "</td>
          <td>" . $full_alarm_fetch['alarmstatus'] . "</td>
          <td>" . $full_alarm_fetch['starttime'] . "</td>
          <td>" . $full_alarm_fetch['endtime'] . "</td>
        </tr>";
   $client_name = $full_alarm_fetch['name'] . ' | ' . $full_alarm_fetch['number'];
}

そして、私は使用する必要があります

$full_alarm_fetch['name'] . ' | ' . $full_alarm_fetch['number'];

したがって、私が今やっている方法は最善の方法ではないようです。つまり、while ループ内の変数は、ループが終了するまで何度も何度も上書きされ、フェッチ情報を使用できるようになります。

私がやろうとしていることを行うためのより良い/効率的な方法があるかどうか疑問に思っていました.

前もって感謝します。

4

2 に答える 2

2

あなたのコードは問題ありません。一度に rs 全体を取得してループすることができます。

while ($rs[] = mysql_fetch..);
//done..
for($i=0;$i<sizeof($rs);$i++) or
foreach($rs as $rec)

次の利点があります。

  • php で rs をキャッシュします (シリアル化されたデータ)
  • rs で逆方向にジャンプする
于 2012-05-25T08:08:53.620 に答える
1

はい、もっと良い方法があります。最初に配列を宣言し、取得したコンテンツをそこに保存してから、配列をループできます。このような。

 $fetched_arr = array();
while ($full_alarm_fetch = mysql_fetch_array($full_alarm_query)) {
  $fetched_arr[] = $full_alarm_fetch;
}

次に、配列をループします

foreach($fetched_array as $something)
 {
    //here you can save the values in the $content
    // you can use $somethin['date'] and etc.. 
 }
于 2012-05-25T08:07:36.710 に答える