2017-07-18 135 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

相关问题