【问题标题】:Display multiple values on one line in mysqli generated dropdown box在mysqli生成的下拉框中一行显示多个值
【发布时间】:2015-07-10 23:45:21
【问题描述】:

使用 mysqli 代码,我已经能够使用 mysql 数据库中的数据创建一个下拉框。 sql 语句从数据库中选择 userId、f_Name 和 l_Name。此列表是表单的一部分,当用户选择名称时,我只想通过 $_Post 方法传递 userId。怎么可能呢?再次感谢你的帮助。

<select name="names">
    <option value = "">---Select---</option>
    <?php
        $queryusers = 'SELECT userID, f_Name, l_Name FROM users';
        $db = mysqli_query($mysqli, $queryusers);
        while ( $names=mysqli_fetch_assoc($db)) {
           echo "<option value='{".$names['f_Name']."}' . 
                {".$names['l_Name']."}'>".$names['f_Name']. " " .
                $names['l_Name']."</option>";
        }
    ?>
</select>

【问题讨论】:

  • value 设为id,而不是name。此外,您应该取出花括号(除非有原因?)。

标签: php html mysqli


【解决方案1】:

只要做这样的事情:

echo '<option value="'.$names['userID'].'" >'.$names['f_Name'].' '. $names['last_nm'] . '</option>';

这成为选项的值,这是提交的内容。

编辑

这是您使用的代码

<select name="names">
    <option value = "">---Select---</option>
    <?php
        $queryusers = 'SELECT userID, f_Name, l_Name FROM users';
        $db = mysqli_query($mysqli, $queryusers);
        while ( $names=mysqli_fetch_assoc($db)) {
           echo '<option value="'.$names['userID'].
            '" >'.$names['f_Name'].' '. $names['last_nm'] . '</option>';
        }
    ?>
</select>

另一个编辑显示 mysqli 准备好的语句示例

假设您将这些相同的值插入到表中,您只需这样做:

你的 mysqli 连接应该是这样的:

$conn = new mysqli($host, $username, $password, $dbname)

然后你会像这样插入(假设 userID 是一个自动增量键)

$stmt = $dbc->prepare("insert into users (userID, f_name, L_name)
                       values (NULL, ?, ?)");
$stmt->bind_param("ss", $names['f_name'],$names['l_name'])
$stmt->execute();
$stmt->close();

"ss" 仅表示两个变量都是字符串;如果它们是整数,您将使用i。如果要进行更新,只需将插入中使用的任何变量替换为 ? 占位符即可。它的工作方式相同。

这是手册:mysqli prepared statements

【讨论】:

  • 这并不重要,但如果可能的话,在下拉列表中不显示 userId 但仍显示名字和姓氏会增强安全性。这可能吗?
  • 它确实不会增强安全性。从在数据库上使用主键之类的东西的角度来看,这会更好。如果你想让安全性更好,你应该在提交时使用prepared statements
  • 我发现管理使用键(如 ID)的数据比名字/姓氏组合要容易得多。这些只是为了提高可读性
  • 我同意您关于管理我的数据库中的键(并且用户 ID 是主键)数据的评论。我尝试了大约 2 1/2 天来让下拉列表在该场所下工作,但不能所以我放弃并走这条路。我真的很想看看您的解决方案是什么样子,使用主键创建下拉菜单并将主键值传递给 &_POST。我知道这将是额外的工作,如果你不想,我会完全理解。再次感谢。
  • 这不是刚刚做的吗? userID(我假设这是一个主键,但我不知道你的表是如何结构的)应该是什么工作。这就是将要提交的内容。复合名字/姓氏组合只是将显示的内容,但它与用户 ID 相关联。试试看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
相关资源
最近更新 更多