0

MYSQL データベースのテーブルに入力される単純な選択ドロップダウンを作成したいと思います。これが私のコードです:

$q = 'SELECT * FROM Shipmethods';
$result = mysqli_query($connection, $q);

echo '<select name="shipmethod">';

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)); 
{   
    echo '<option value="' . $row['shipmethodid'] . '">' . $row['shipmethoddesc'] . '</option>';
}

echo '</select>';

mysqli_free_result($result); // free up the results

}

接続エラー、テーブル名または列名のタイプミスはありません。HTML 出力は、選択オプションが存在することを示していますが、それは空です。これにはmysqliを使用したいと思います。

この件に関してはすでに数え切れないほどのトピックがあるようですが、私が見る限り、私のコードはそれらの回答済みの質問の正解と一致しています。

前もって感謝します。

4

2 に答える 2

5

この行から削除;してください。残りのコードは問題ないようです。動作するかどうか教えてください --

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)); 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
于 2012-12-22T04:04:49.673 に答える
0

まず、私たちが持っている証拠に基づいて、空の結果セット以外で最も可能性の高い問題は、swapnesh が特定した問題であり、これは明らかに論理エラーです。ここで誤って行われたことが構文エラーではないことを明確にするために、問題をシミュレートするこの図を提供しています。本質的に、セミコロンの位置が間違っていると、while ループが使い果たされた後でのみ、次のブロックに入ることができます。

次の例を検討してください。

<?php

$r = array(1,2,3,4);

function fetchit(&$r) {
    return array_pop($r);
}


while ($val = fetchit($r))
{
    echo $val;
} 

これが本来の用途になります。スクリプトにこのコードが含まれている場合はどうなるでしょうか。

<?php

$r = array(1,2,3,4);

function fetchit(&$r) {
    return array_pop($r);
}


while ($val = fetchit($r));
{
    echo $val;
}

これらを試してみると、両方のスクリプトがエラーなしで実行されることがわかります。不必要ではありますが、スクリプト { } のどこかに不要なブロックがランダムに含まれていても、php は気にしません。また、if、while、for などの後にブロックが続くかどうかも気にしません。実際、人々がコードを短くするのは一般的な方法です:

if (//somecondition)
    statement;

多くの人はその慣行に眉をひそめますが、それは合法であり、プログラマーは常にそれを使用しています.

于 2012-12-22T04:30:50.063 に答える