4

以下のコードは、データベース テーブルから 1 つのレコードを出力するのに問題なく動作しますが、実際に実行できるようにしたいのは、mysql テーブル内のすべてのレコードを私のコードと同様の形式で出力することです。

IE: html テーブルの各列の見出しとしてのフィールド名と、見出しの下のエントリ。これが誰かにとって意味があることを願っています;)

        $raw = mysql_query("SELECT * FROM tbl_gas_meters");
        $allresults = mysql_fetch_array($raw);
        $field = mysql_query("SELECT * FROM tbl_gas_meters");
        $num_fields = mysql_num_fields($raw);   
        $num_rows = mysql_num_rows($raw);   
        $i = 1;

            print "<table border=1>\n";
            while ($i < $num_fields)
            {
                echo "<tr>";
                echo "<b><td>" . mysql_field_name($field, $i) . "</td></b>";
                //echo ": ";
                echo '<td><font color ="red">' . $allresults[$i] . '</font></td>';
                $i++;
                echo "</tr>";
                //echo "<br>";
            }
            print "</table>";
4

5 に答える 5

5

追加情報として、おそらく PDO を使用する必要があります。より多くの機能があり、SQL ステートメントの準備方法を学習するのに役立ちます。また、より複雑なコードを作成する場合にも、はるかに役立つでしょう。

http://www.php.net/manual/en/intro.pdo.php

この例では、配列ではなくオブジェクトを使用しています。必ずしも問題ではありませんが、使用する文字が少ないので気に入っています。オブジェクトを深く掘り下げると違いが現れますが、この例ではそうではありません。

//connection information
$user = "your_mysql_user";
$pass = "your_mysql_user_pass";
$dbh = new PDO('mysql:host=your_hostname;dbname=your_db;charset=UTF-8', $user, $pass);

//prepare statement to query table
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
//loop over all table rows and fetch them as an object
while($result = $sth->fetch(PDO::FETCH_OBJ))
{
//print out the fruits name in this case.
  print $result->name;
  print("\n");
  print $result->colour;
  print("\n");
}

おそらく、準備されたステートメントも調べたいでしょう。これは、注射を防ぐのに役立ちます。セキュリティ上の理由から、インジェクションは良くありません。そのためのページはこちらです。

http://www.php.net/manual/en/pdostatement.bindparam.php

おそらく、ユーザー入力のサニタイズも検討する必要があります。あなたの現在の状況とは無関係で、注意してください。

また、PDOですべてのフィールド名を取得するには、これを試してください

$q = $dbh->prepare("DESCRIBE tablename");
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_COLUMN);

すべてのテーブル フィールドを取得したら<div><table><th>

楽しいPHP学習。楽しいです。

于 2013-02-12T05:01:44.243 に答える
0
while ( $row = mysql_fetch_array($field) ) {
    echo $row['fieldname'];
    //stuff
}
于 2013-02-12T04:35:55.310 に答える
0

これを試して :

    $raw = mysql_query("SELECT * FROM tbl_gas_meters");
    $allresults = mysql_fetch_array($raw);
    $field = mysql_query("SELECT * FROM tbl_gas_meters");
    while($row  = mysql_fetch_assoc($field)){
         echo $row['your field name here'];
    }

mysql_* 関数は新しい php バージョンでは非推奨になっているため、代わりに mysqli または PDO を使用してください。

于 2013-02-12T05:05:34.763 に答える