1

わかりましたので、ここに私のコードがあります:

$select_status = 0;
$select_status = "<select name='status'>\n";
$select_status .= "<option value=''>SELECT ONE</option>\n";
$sdataset = mysql_query("SELECT id, name FROM phponly_category") or die(mysql_error());

while($srow=mysql_fetch_assoc($sdataset)) {
    echo implode(", ", $srow);
    echo "<br />";

    $select_status .= "<option value='".$srow['name']."'";
    $select_status .= ">".$srow['name']."</option>\n";


} // end while loop
echo "out of the loop";
$select_status .= "</select>\n";
// now insert the <select> list control into the page
echo $select_status;

コードは、最後の行が壊れるまで正常に機能します。echo $select_statusを出力できません。各行を印刷して、SQL クエリの結果で何が起こっているかを確認しようとしましたが、すべて問題ないように見えます。何らかの理由で、最後の行でwhile ループが壊れ、whileループの後のコードでさえ実行されません。

4

4 に答える 4

1

while テストの部分を実行しないでくださいor die(mysql_error())...前に実行してください。

if($sdataset==false) {
    die(mysql_error());
}
while($srow=mysql_fetch_array($sdataset)) {
    $select_status .= "<option value='".$srow['name']."'".">".$srow['name']."</option>\n";
} // end while loop
于 2012-08-02T02:59:28.623 に答える
1

結果セットのor die()最後を読み取ると、 while() ループで実際にスクリプトが強制終了されます。mysql_fetch は false を返し、or die().

エラーのチェックはクエリでは有効ですが、フェッチ部分ではこのように行うことはできません。このような誤検知が発生するためです。

于 2012-08-02T03:09:08.850 に答える
0

私は個人的にhtmlコードをエコーアウトするのが好きではありません。あなたの目標がクエリから結果が得られるかどうかを検証することである場合、次のようなことができます

<?php
    $sdataset = mysql_query("SELECT id, name FROM phponly_category");
    if (mysql_num_rows($sdataset) > 0) {
?>
    <select name='status'>
    <option value=''>SELECT ONE</option>
<?php
    while($srow = mysql_fetch_array($sdataset)) {
?>
    <option value='<?php echo $srow['name'] ?>'><?php echo $srow['name'] ?></option>
<?php } // end while loop ?>
    </select>
<?php
    } // end of if
    else {
        // Whatever you wanna put here
    }
?>

編集済み: にタイプミスがありますmysql_num_rows。もう一度お試しください

于 2012-08-02T03:22:52.023 に答える
0

mysql_fetch_assocフィールド名をキーにしてデータを取得するために使用します。

<?php

$conn = mysql_connect('localhost', 'username', 'password');
mysql_select_db('test');

$select_status = "<select name='status'>\n";
$select_status .= "<option value=''>SELECT ONE</option>\n";
$sdataset = mysql_query("SELECT id, name FROM phponly_category") or die(mysql_error());

while($srow=mysql_fetch_assoc($sdataset)) {
    $select_status .= "<option value='".$srow['name']."'".">".$srow['name']."</option>\n";

} // end while loop

$select_status .= "</select>\n";
echo $select_status;
?>

注: この拡張機能の使用はお勧めできません。mysqli または PDO を見てください。

于 2012-08-02T03:15:47.733 に答える