【问题标题】:Retrieving data from Mysql and storing in option html tag从 Mysql 检索数据并存储在选项 html 标记中
【发布时间】:2015-02-19 23:14:22
【问题描述】:

大家好,我被这个问题困住了。我要做的是从 MYSQL 中检索一些数据并将其存储在选项标签中。这是我的代码。

<?php
$user = "admin";
$password = "";
$db = "test";
$host = "localhost";
$cxn = mysqli_connect($host, $user, $password, $db);

$query = "SELECT ARTIST FROM music";
$results = mysqli_query($cxn, $query) or die("Connection could not be established");

echo "<select name='mediaType'>";
while ($row = mysqli_fetch_assoc($results))
{
    extract($row);
    echo "<option value=''>$row</option>\n";                                        
}
echo "</select>";
?>

执行此函数后,选项标记中的输出是选择元素中所有选项的“数组”。我尝试将 php 变量 $row 中的数据存储到一个数组中,然后循环抛出该数组并回显数组中的每个索引,但结果是相同的。有人请给我一些关于这个问题的指导。感谢所有帮助的人。

【问题讨论】:

  • 你为什么使用extract()
  • 好吧,我想从 Artist 列中获取所有数据。除此之外没有什么特别的原因。有没有更好的办法。请记住,我是 php 的新手。
  • $row 是一个数组。您必须为要显示的每个值编写:$row["id"] 或 $row[columnname](其中列名是您在 dzatabase 中的字段的名称)
  • 当我写extract($row['ARTIST']);仍然为选项标签输出“数组”。
  • @meddy extract() 解包一个数组,使用数组的键作为变量名创建变量。所以,再一次,你为什么要使用这个功能? RTFM。

标签: php html mysql select options


【解决方案1】:

对于其他用户,extract() 不是您想要的。 $row 是一个数组,其中键是您的列名。使用这样的东西:

while ($row = mysqli_fetch_assoc($result)) {
    echo '<option value="">'.$row['ARTIST'].'</option>';
}

注意我是如何更改引号的;数组运算符在双引号字符串中不起作用。

将来,要检查变量的内容,请考虑使用var_dump(),这对于查看幕后发生的事情非常有用。

编辑:哦,如果您的表有一个数字主键 ID,您可能应该将其用作您的选择值,以保护自己免受更改名称或人工输入拼写错误的影响。

【讨论】:

  • 注意value属性还是空的。它会在发布表单时发送空值。
【解决方案2】:

为什么不干脆做:

echo "<select name='mediaType'>";
while ($row = mysqli_fetch_assoc($results))
{
    echo "<option value='".$row['ARTIST']."'>".$row['ARTIST']."</option>";
}
echo "</select>";

【讨论】:

  • 感谢您的洞察
猜你喜欢
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
相关资源
最近更新 更多