2015-12-21 30 views
-1

我看了一些其他問題在線和在這裏與此有關,但沒有一個看起來真的真的遇到我的錯誤。使用PHP mySQL下拉式不顯示數據庫選項

我寫了我的PHP代碼,並將其實現到我的HTML中,我得到下拉框出現,但它實際上並不想顯示任何值。我的代碼中是否包含任何實現或修復?我如何使它起作用?

我的數據庫名爲:Treatments

我的,我想顯示的就是所謂的數據庫列:Treatment

treatment_dropdown.php

<?php 

    $hostname = 'host_name'; 
    $dbname = 'database_name'; 
    $username = 'username'; 
    $password = 'password'; 

    $con=mysql_connect($hostname,$username,$password,$dbname) or die("Failed to connect to MySQL: " . mysql_error()); 
    $db=mysql_select_db($dbname,$con) or die("Failed to connect to MySQL: " . mysql_error()); 


    $query = "SELECT * FROM `Treatments`"; 

    $result = mysql_query($con, $query); 
    $options = ""; 
    while ($row = mysql_fetch_array($result)){ 
     $options = $options . "<option>$row[1]</option>"; 
    } 


?> 

HTML:

<body> 
    <select> 
     <?php 
      echo $options; 
     ?> 
    </select> 
</body> 
+0

HTML是在一個單獨的文件(而不是'treatment_dropdown.php')?如果是,是否在HTML文件中包含'treatment_dropdown.php'? –

+1

難道你不想在表名周圍使用反引號而不是單引號? –

+0

是的它是一個單獨的文件。我已經把它作爲一個班級加入了,但我認爲這是不對的,這可能是導致它的原因。 –

回答

2

考慮更改這一行:

$query = "SELECT * FROM 'Treatments'"; 

使用反引號,而不是單引號,像這樣:

$query = "SELECT * FROM `Treatments`"; 

在我的測試查詢我得到了,因爲這樣的錯誤,讓我知道是否有幫助。

+0

我剛剛做了,並編輯了這篇文章。不幸的是,它不會改變它:( –

+0

這真的應該工作,除非你的連接有問題,你可以嘗試運行在phpmyadmin或在終端的查詢?如果它的工作,那麼我們可以縮小它的連接代碼。 –

0
  1. 不要使用mysql _ *()函數,它們已被棄用。改用mysqli或PDO。
  2. 無論哪個庫用於訪問mysql,都要單獨檢查sql代碼中的錯誤。 sql代碼中的錯誤不會導致php代碼中的錯誤。
  3. 在這種特殊情況下,問題在於您將表格包含在單引號中而不是反引號中。

正確的代碼:

$query = "SELECT * FROM `Treatments`"; 
1

添加<?php include 'treatment_dropdown.php'; ?>到HTML文件的頂部。這應該使您能夠訪問$options字符串,以便可以在該文件中使用它。請注意,爲了實現此目的,treatment_dropdown.php需要與HTML文件位於同一目錄中。如果不是,則include語句將需要更改以反映適當的文件路徑。

+0

給我這個:'mysql_query()期望參數1是字符串,給出的資源' –

+0

和這個:'mysql_fetch_array()期望參數1是資源,null給出' –

+0

您對'mysql_query'的參數的順序是錯誤的。 –

0

這是你的PHP文件應該是什麼樣子:

<?php 

$hostname = 'localhost'; 
$dbname = 'Treatments'; 
$username = 'root'; 
$password = ''; 

$con = mysql_connect($hostname, $username, $password, $dbname) or die("Failed to connect to MySQL: " . mysql_error()); 
$db = mysql_select_db($dbname,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

/* No single quotes needed for the table name. */ 
$query = "SELECT * FROM Treatments"; 

/* First parameter should be $query not $con */ 
$result = mysql_query($query, $con); 
$options = ""; 

/* Check if no results exist. */ 
if (!$result) { 
    die("NO results found."); 
} 

while ($row = mysql_fetch_array($result)) { 
    $options .= "<option>$row[treatment]</option>"; 
} 

>

注:

  1. 不使用mysql_ *函數,他們並不安全,使用PDO來代替。
  2. 您的表名不需要用單引號括起來。
  3. mysql_query預計參數1是查詢而不是數據庫連接。
  4. 您應該檢查是否找不到結果。
相關問題