【问题标题】:Getting Selectbox values from the database using PHP and mysqli使用 PHP 和 mysqli 从数据库中获取选择框值
【发布时间】:2015-02-17 13:54:22
【问题描述】:

我想从 phpmyadmin 数据库中提取人名并将它们放置在 HTML 选择框中,当用户从选择框中选择名称时,它应该在表格中显示该人的数据库中的详细信息。我似乎无法让它工作,我可以从数据库中获取名称并显示在选择框中,但是当您单击名称时,它似乎会显示数据库中的每条记录,而不仅仅是一个为那个人。我使用的是 mysql 而不是 mysql。这是我的代码

这是我的后端资料

<?php 
$conn = mysqli_connect("localhost", "root", "root") or die ("No connection"); 
mysqli_select_db($conn, "flat") or die("db will not open"); 
$query = "select FlatCode, Address from FLAT"; 
$result = mysqli_query($conn, $query) or die("Invalid query"); 
echo "<table border='1'><tr><th>modulecode</th><th>studentnum</th></tr>";  
while($row = mysqli_fetch_array($result)) 
{ 
    echo "<tr><td>" . $row[0] .  "</td><td>" .  $row[1] .  "</td></tr>";
} 
echo "</table>"; 
mysqli_close($conn); 
?> 

这是我的前端工作

<font size="4"> Choose an Owner Name</font><br><br> 
<form action="flat.php" method="post"> 
<select name="name"> 
<?php 
$con = mysqli_connect("localhost", "root", "root") or die ("No connection"); 
mysqli_select_db($con , "flat") or die ("db will not open"); 
$query = "SELECT distinct OwnerName, FlatCode, Address from FLAT"; 
/*$query= $_POST ("name")
function change_guery($query)
mysqli_use_result*/

$result = mysqli_query($con, $query) or die("Invalid query");  
while($rows = mysqli_fetch_array($result))

{ 
      echo "<option value=\"" . $rows[0] . "\">" . $rows[0] . "</option>"; 
} 

echo "</select>"; 
	       

mysqli_close($con); 
?> 
<input type="submit" value="Submit Value"> 
</form></body></html> 

【问题讨论】:

  • 您的意思是选择框包含所有数据库条目,而不仅仅是您想要的那些?那是因为您的查询选择了所有内容。例如,$query = "select FlatCode, Address from FLAT"; 不包含任何 WHERE 子句。
  • 这不起作用,因为我已经尝试过了
  • 您已将$query= $_POST ("name") 注释掉。那是无效的语法。它应该是带有方括号的$query= $_POST["name"];。但是,我会将其更改为$name = $_POST["name"];,然后以$query = "SELECT distinct OwnerName, FlatCode, Address from FLAT WHERE column_x = '$name'"; 为例。 column_x 是您要查询的列,因为我不知道您要使用哪一个。
  • 你试过什么?包括WHERE?据我所知,您希望拥有当前登录或选择的用户的单位/地址。因此,在您的表 flat 中,您必须有一个用户标识符。然后您需要对此进行查询,例如:$query = "select FlatCode, Address from FLAT where userid='123' ";
  • 很遗憾这不起作用

标签: php mysqli phpmyadmin


【解决方案1】:

你的 flat.php 代码有问题。您正在通过表单正确发布信息,但您忘记通过 flat.php 中的 $_POST 接收信息。

看下面的代码和里面的cmets,应该可以了-

<?php 
$n = $_POST["name"];//we receive the name passed by the form
$conn = mysqli_connect("localhost", "root", "root") or die ("No connection"); 
mysqli_select_db($conn, "flat") or die("db will not open"); 
$query = "select FlatCode, Address from FLAT WHERE `OwnerName` = '$n' LIMIT 1";//see the changes here 
$result = mysqli_query($conn, $query) or die("Invalid query"); 
echo "<table border='1'><tr><th>modulecode</th><th>studentnum</th></tr>";  
$row = mysqli_fetch_array($result);
//as the result will return 1 row only so we dont need while loop here
echo "<tr><td>" . $row[0] .  "</td><td>" .  $row[1] .  "</td></tr>";
echo "</table>"; 
mysqli_free_result($result);//dont forget to free result
mysqli_close($conn); 
?>  

【讨论】:

  • 遗憾的是这仍然不起作用,它开始让我感到压力
  • 表示一行平面代码,以及从选择框中选择的每个人的地址
  • @Rebekah,您的意思是要从该列表中选择超过 1 个人并在 flat.php 中显示所选人员的统计信息?
  • 不应只选择一个人,但在 flat.php 中似乎显示了数据库中的所有内容
  • 使用我在 flat.php 中给出的确切代码,还要注意查询行中的更改,它应该可以正常工作。你的问题中是否有后端代码 = flat.php 代码?
猜你喜欢
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多