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 58 年前最佳解答
你用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 年前
你先不要用select包起來,
先直接echo出來看看哪裡出錯,
echo $result;應該是這樣才有用,
如果echo不出來 那就是Mysql出錯,
如果能echo 出來那就照著小魚的做法吧!