2017-07-18 73 views
0

*當我將它複製到問題時,「die」的條件被錯誤地排除在我的代碼之外。我把它放回去了。在PHP中使用sql數據庫創建下拉列表

我知道這個問題看起來可能是重複的,但我還沒有在其他任何問題中找到答案。我正嘗試創建一個基於數據庫中列的下拉列表。我嘗試了兩種不同的方式,但都沒有給我正確的結果。有誰知道這樣做的正確方法?

我在其他StackOverflow答案中看到的第一種方式(Fetching data from MySQL database to html drop-down listFetching data from MySQL database to html dropdown list)。我的代碼如下:

<?php 
$connect = mysql_connect('localhost', 'root'); 
if ($connect == false) 
    { 
    die ("Unable to connect to database<br>"); 
    } 

$select = mysql_select_db('ViviansVacations'); 
if ($select == false) 
    { 
    die ("Unable to select database<br>"); 
    } 
$query = "SELECT * FROM Destinations"; 
$result = mysql_query($query); 
?> 
<select name="select1"> 
<?php 


while ($row = mysql_fetch_array($result)) 
{ 
echo "<option value='". $row['Europe'] ."'>" .$row['Europe'] ."</option>" ; 
} 
?> 
</select> 

的NetBeans給我發送一個錯誤,指出「文中未允許元素在這種情況下‘選擇’。」

第二種方法我試過:

<?php 
$connect = mysql_connect('localhost', 'root'); 
    { 
    die ("Unable to connect to database<br>"); 
    } 
    $select = mysql_select_db('ViviansVacations'); 
    { 
    die ("Unable to select database<br>"); 
    } 
    $query = "SELECT * FROM Destinations"; 
    $result = mysql_query($query); 
?> 
<select name="select1"> 
<?php 
    while ($line = mysql_fetch_array($result)) 
    { 
?> 
<option value="<?php echo $line['Europe'];?>"> <?php echo 
$line['field'];?> </option> 
<?php 
    } 
?> 
</select> 

此代碼沒有產生任何錯誤。然而,在表單內部是打開的php行後跟一個空的下拉框:

「);} $ select = mysql_select_db('ViviansVacations'); {die(」Unable to select database 「);} $查詢= 「SELECT * FROM目的地」; $結果= mysql_query($查詢);?>

+0

是文件擴展名.PHP?特別是第二個例子。 –

+0

@SloanThrasher同樣的問題。 – Ravi

+0

您使用的是上面的腳本在獨立.PHP腳本或稱它在Ajax場景? – shivgre

回答

0

有幾件事情,您可以確認和正確

首先,你的數據庫連接代碼,即。似乎並不正確我沒有看到你想要調用的任何條件die

$connect = mysql_connect('localhost', 'root'); 
{ 
die ("Unable to connect to database<br>"); 
} 

從上面的代碼,下面一行將執行所有的時間

die ("Unable to connect to database<br>"); 

你應該糾正你的數據庫連接的代碼下面:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
echo 'Connected successfully'; 
mysql_close($link); 

您可以參考mysql_connect的用法。

此外,驗證您的文件擴展名是.php

-1

你可能想嘗試使用這個..The的dept_id和描述u必須根據你的數據庫。希望改變這將幫助你

<?php 
    $sql = mysql_query("SELECT dept_id ,description FROM department 
    ORDER BY dept_id ASC"); 
    db_select($sql,"dept_id",$dept_id,"","-select Department-","",""); 
    ?> 
1

所以你的方法有很多問題。首先,您使用的是過時mysql_*功能,這是糟糕的想法和第二你沒有正確調試您的數據庫連接:

$connect = mysql_connect('localhost', 'root'); 
    { 
    die ("Unable to connect to database<br>"); 
    } 

在上面的代碼模具語句總是執行停止進一步執行。

還要確保數據庫ViviansVacations和表Destinations和列Europe用正確的名稱(按照標準,並嘗試使用數據庫/表/列的命名全部小寫字母)

正確mysqli_*的做法是(本地測試存在和選擇框形式正確):

<?php 
$db = 'ViviansVacations'; 

$mysqli = new mysqli('localhost', 'root', '', $db); 

if($mysqli->connect_error) 
    die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error()); 


$query = "SELECT * FROM Destinations"; 
$result = mysqli_query($mysqli, $query); 

?> 

<select name="select1"> 
<?php 
while ($row = mysqli_fetch_array($result)) { 
    echo "<option value='" . $row['Europe'] . "'>" . $row['Europe'] . "</option>"; 
} 
?> 
</select> 
0

主要是您的問題是數據庫連接。試試這個 -

<?php 
mysql_connect("localhost", "root", "") or 
    die("Could not connect: " . mysql_error()); 
mysql_select_db("your_db"); 

$result = mysql_query("SELECT * FROM your_table"); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    print_r($row); 
    echo "<br>"; 
} 

mysql_free_result($result); 
?> 
0

可能有幾個問題:

  • 使用mysqli_connect,而不是mysql_connect因爲MySQL折舊
  • 讓第三個參數爲空`mysqli_connect( 'localhost' 的 '根', ''); //根據標準
  • 調試您的代碼,例如:(print_r($connect),在phpmyadmin中執行您的查詢,print_r($result)然後在循環中print_r($row)

年末,我相信你會得到你想要的結果,你也將知道的細節,發生了什麼事。

+0

它的「過時」。這可能會或可能不會對其貨幣價值產生不利影響。 – Strawberry

相關問題