Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

[PHP]資料庫讀入下拉式選單

才剛開始學PHP這個語言,覺得很多習慣和之前學的語言不太一樣Orz

想寫將資料庫的內容呈現在下拉式選單的語法,卻不知問題出在哪,網頁執行時只出現一個空空的下拉式選單...

p.s.我也爬過GOOGLE上的文章了,依照他們的方式修改,卻怎麼跑也跑不出來Orz

想請問該如何改善我的程式碼?

<?

$dbServer = "localhost";

$dbName = "server_lesson";//資料庫名稱

$dbUser = "root";

$dbPass = "test123";

if ( ! @mysql_connect($dbServer, $dbUser, $dbPass) )

die("無法連線資料庫伺服器");

mysql_query("SET NAMES utf8");

if ( ! @mysql_select_db($dbName) )

die("無法使用資料庫");

mysql_select_db($dbName);//開啟資料庫,這邊這行會很多餘嗎?

$str="SELECT `local` FROM `0227_postofficenum`";//主要是希望0227_postofficenum這張資料表的local欄位資料全部進入下拉式選單...

$result=mysql_query($str);//sql查詢結果

$result=mysql_fetch_row($result);//將sql查詢結果轉為陣列再度存回result

?>

<select>

<?

for($i=0;$i<count($result);$i++)

{

echo "<option value=$i>";

echo $result[$i];

echo "</option>";

}

?>

</select>

3 個解答

評分
  • 小魚
    Lv 5
    8 年前
    最佳解答

    你用mysql_fetch_array這個函數試試看。

    將你的for迴圈,改成while($row=mysql_fetch_array($result))

    然後echo $result[$i];改成echo $row['local'];

    如果怕自己亂掉,再把$result=mysql_fetch_row($result); 這行註解

    mysql_fetch_row這個函數,只會取出一筆資料的所有欄位

    而並不是取出全部的資料,所以你的目的是要讓local這個欄位的所有資料顯示,當然就不適用mysql_fetch_row這個函數了!

    整理一下,下面select那邊的程式碼,改成

    //$result=mysql_fetch_row($result);//將sql查詢結果轉為陣列再度存回result

    ?>

    <select>

    <?

    while($row=mysql_fetch_array($result))

    {

    echo "<option value=$i>";

    echo $row['local'];

    echo "</option>";

    }

    ?>

    注意一下,我有把所有的"<"這個符號,改成全型字體,若要套用,請記得修改回來

    2013-03-14 11:00:43 補充:

    比較抱歉,後來再看一次,我好像有點文不對題= =

  • 8 年前

    謝謝各位,我後來是用assoc做出來的!

  • 8 年前

    你先不要用select包起來,

    先直接echo出來看看哪裡出錯,

    echo $result;應該是這樣才有用,

    如果echo不出來 那就是Mysql出錯,

    如果能echo 出來那就照著小魚的做法吧!

還有問題?馬上發問,尋求解答。