0

インターンとして、PHP での SQL クエリからのテーブルの構築と操作に多くの時間を費やしていることに気付きました。私の現在の方法は、2 つの foreach ループを使用することです。

foreach($query as $record){
    foreach($record as $field => $value){
        *Things that need to be done on each field-value pair*
    }
    *Things that need to be done on each row*
}

これを行うより良い方法はありますか?

また、データを ~ で区切られたリストとしてまとめてサーバーに保存する傾向がありますが、これは悪い習慣ですか?

レビューのためにいくつかのコードを公開したいのですが、会社のタラの内部を公開する危険を冒したくありません。

4

3 に答える 3

0

クエリの結果から HTML テーブルを生成する組み込みの方法はありません。そのようなコードを何度も書いている場合は、再利用可能なクラスまたはライブラリを作成することをお勧めします。例えば:

$table = new HTMLTable();
$table->setData($data);
echo $table->toHTML();

上記は機能するコードではありません。同じテーブル構築コードを何度も繰り返す代わりに、再利用可能なコードを作成する方法の例にすぎません。

于 2012-12-05T16:27:42.517 に答える
0

while関数の 1 つでループを使用する傾向がありmysql_fetch_..ます。しかし、本質的にはあなたがしていることと同じです。

$query = 'SELECT
            stuff
          FROM
            table';
if ($query = mysql_query($query)) {
    while ($row = mysql_fetch_assoc($query)) {
        foreach ($row as $key => $value) {
            /* Things that need to be done on each field-value pair */
        }
        /* Things that need to be done on each row */
    }
}

そして、〜区切りリストについて。データをそのようにパックするのではなく、別の DB フィールドに保存することを強くお勧めします。そのようなパックごとに新しいテーブルを作成するだけです。

于 2012-12-05T17:51:14.657 に答える
0

Foreach ループは、データを反復処理するための最良の方法です。コードをもう少しきれいにしたい場合は、3 値バージョンを使用してみてください

<?php foreach($query as $record) : ?>
   <?php foreach($record as $field => $value) : ?>
        *Things that need to be done on each field-value pair*
    <?php endforeach; ?>
    *Things that need to be done on each row*
<?php endforeach; ?>

また、上記のコメントで述べたように、データベースに分離されたデータを保存すると、多くの機能が失われます。これを行う必要がある場合は、区切り文字列の代わりにシリアル化されたオブジェクトを格納してみてください。json_encode()json_decode( )など、さまざまな方法でオブジェクトを操作できます。

   $myArray = array();
    $myArray['User1']['book'] = 'Pride and Prejudice';
    $myArray['User1']['favorites'] = 'Water skiing';
    $myArray['User2']['book'] = 'Mansfield Park';
    $myArray['User2']['favorites'] = array('skateboarding', 'surfing', 'running');
    $myArray['description'] = 'Things people like.';        

    echo '<pre>';
    print_r(json_encode($myArray)); //This will convert your array to a string for the db
    echo '</pre>';

    echo '<pre>';
    $myArrayString = json_encode($myArray);
    print_r(json_decode($myArrayString)); //This will convert the db string to an object for manipulation

echo '</pre>';
于 2012-12-05T16:24:10.643 に答える