2013-03-16 71 views
0

我对PHP很陌生,正在尝试制作一个PHP脚本,它假设连接到一个MySQL数据库并获取该值,然后显示为一个选项下拉式菜单。使用php读取mysql并在下拉菜单中显示结果

这是代码我迄今(借朋友的帮助):

$username = "root"; 
$password = ""; 
$hostname = "localhost"; 
$database = "customers"; 
$id = ""; 

mysql_connect("$hostname", "$username", "$password") or die (mysql_error()) or die (mysql_error()); 

mysql_select_db("$database") or die (mysql_error()); 

$result = mysql_query("SELECT id FROM users WHERE id='$id'") or die(mysql_error()); 
     while ($row = mysql_fetch_assoc($result)) { 
     $valuestring = $row['id']; 
     print_r($result); 
      echo "<option value='$valuestring'>". $valuestring ."</option>"; 
      mysql_close(); 
     } 
print_r($id); 

但是,当我使用此代码的选项返回空:/

我也试图做的print_r($结果);并给我资源ID#4,所以我想这是可行的。

如果有人可以帮助我解决这个我会是一个快乐的家伙:d

+0

'的print_r($行)',而不是'的print_r($结果)'看看你是否有预期的结果。 “$ id”为空是否正常? – Tchoupi 2013-03-16 22:44:55

+0

嗨。尝试以'echo'开始“;' – Martina 2013-03-16 22:46:21

+0

第二个想法...'SELECT id FROM users WHERE id ='$ id'' makes no感。你正试图获得你正在寻找的同样的价值? – Tchoupi 2013-03-16 22:47:26

回答

0

$值在代码中的ID是空的,你的那个阿瓦雷? 并且可以在将它发送到mysql之前打印查询? 使用:

"$query = "select id from table where id = '$id'"; 
mysql_query($query); 
echo $query; 
+0

当我使用你发布的代码时,我得到“资源ID#4” – kagstrom2100 2013-03-17 15:59:31

0

也许如果你告诉我们你输出了什么,它会有帮助。如果输出包括在循环内生成的HTML那么这意味着查询返回至少1行

选项返回空

。但echo "<option value='$valuestring'>"会产生一个空字符串的唯一方法是如果$ valuestring是一个空字符串。它的填充来自“SELECT id FROM users WHERE id ='$ id'”,意味着你必须在你的数据库中有一行id为null或者一个空字符串 $ php在你的php代码中为null /空字符串 - 确实就是这样($ id =“”;)。

NTW mysql_close();应该在循环之外。

0

让我们来简化这个代码:

<select name="user" id="user" width="200px" style="width: 200px"> 
<option value="">Select State</option> 
<?php  
$query_uf = "SELECT id FROM users WHERE id="'.$id.'";  
$result = mysql_query($query_uf,$bd);  
while ($users =mysql_fetch_assoc($result)) { 
echo "<option value='".$uf['id']."'>".$uf['user']."</option>";  } 
?> 
</select> 

观测数据:这是更好地使用mysqli_query和连接。而且,在你的代码中,它缺少mysql_query中的连接。

0

我以前需要使用类似的方法从表中检索相册列表,也许试试这个功能。创建你的表单并在和标签内调用该函数以使其工作。这应该在查询中指定您的id(s)。

的functions.php(或任何你想放的功能):

function stateList() { 
$username = "username"; 
$password = "password"; 
$host = "localhost"; 
$dbname = "dbname"; 
$id = RETRIEVE VALUE HERE; 
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 
$query = " 
    SELECT 
    id, 
    FROM users 
    WHERE 
    id = $id // YOU MAY WANT TO REMOVE WHERE - $ID AS STATED ABOVE, DOESN'T MAKE SENSE. 
    "; 

    try 
    { 
     $stmt = $db->prepare($query); 
     $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 
     $valuestring = $row['id']; 
    $rows = $stmt->fetchAll(); 
foreach($rows as $row): 
    print "<option value='" . $valuestring . "'>" . $valuestring . "</option>"; 
endforeach; 
} 
?> 

选择页:

<? include 'functions.php' ?> <!-- This will allow you to call the function. --> 
<form action="example.php" method="post" enctype="multipart/form-data"> 
    <select name="album"> 
     <? stateList(); ?> <!-- Calls the function and retrieves all options --> 
    </select> 
    <input type="submit" name="submit" value="Submit"> 
    </form>