0

メンバーシップをアップグレードするための価格表を作成しています。

mySQLには、各メンバーシップが許可できるものに制限のあるテーブルがあります画像を参照してください

テーブルから情報を取得し、それを繰り返し処理して、別の配列からテキストを追加しようとします。私は答えをオンラインで徹底的に探してみましたが、おそらく正しい用語を探していません. この質問の目的のために、私は 2 つのフィールドを使用していますが、実際には多くの列を繰り返して追加します。

これが私のコードです:

$sql = "SELECT maxProducts,maxImages FROM memproducts_membership_settings WHERE useThis='1'";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs,MYSQL_ASSOC))
{
    foreach($row as $field)
    {
        $append = array('Product Slots','Images per product');
        print $field.' '.$append.'<br>';
    }
}

私が得るのは次のとおりです。

5 アレイ

2 アレイ

私が必要とするものではありません:

5 つの製品スロット

商品ごとに 2 つの画像

これを行う方法があると確信していますが、私はそれを理解することができません.誰かが私にいくつかの指針を教えてください. 多くの点 :)

4

4 に答える 4

0

これはかなり基本的なものです...

while($row = mysql_fetch_array($rs,MYSQL_ASSOC))
{
    echo $row['maxProducts'] . ' Product Slots<br>';
    echo $row['maxImages'] . ' Images per product<br>';
}

または、質問が示唆するように、データベースから返す順序で動的フィールドを使用してこれを行う必要がある場合は、データベースの列名を次のような適切なラベル コンテンツにマッピングすることを検討してください。

$labels = array(
    'maxProducts' => 'Product Slots',
    'maxImages' => 'Images per product',
    ...
);

...

while($row = mysql_fetch_array($rs,MYSQL_ASSOC)) {
    foreach ($row as $key => $value) {
        echo $value . ' ' . $labels[$key] . '<br>';
    }
}

PHP を学んでいるだけなら、絶対に関数を学ぶべきではないことに注意してくださいmysql_*。それらは非推奨であり、死ぬ必要があります。PDOまたはの使い方を学んでくださいmysqli

于 2013-10-21T22:18:40.867 に答える
0

あなたのコードとあなたのアプローチには、私がまったく気に入らないことがたくさんありますが、現在の問題に対する最も直接的な解決策は、次foreachを使用して、ループ内から文字列の配列を反復処理することeach()です。

$strings = array('Product Slots','Images per product');
while($row = mysql_fetch_array($rs,MYSQL_ASSOC))
{
    reset($strings);
    foreach($row as $field)
    {
        $append = each($strings);
        print $field.' '.$append[1].'<br>';
    }
}

少なくとも次のことを認識しておく必要があります。

  • ext/mysql の廃止 (mysqli または PDO のいずれかを使用); と

  • XSS 攻撃のリスク (値をデータベースからブラウザーに返す前に HTML をエスケープします)。

于 2013-10-21T22:18:44.727 に答える
0

本来あるべきことを行っています... 配列を作成し、その名前を出力するように依頼しました。print は配列を自動的に反復できないため、変数の型が何であるかを示すだけです。

于 2013-10-21T22:21:49.013 に答える