Php 在mysqli生成的下拉框中一行显示多个值

Php 在mysqli生成的下拉框中一行显示多个值,php,html,mysqli,Php,Html,Mysqli,使用mysqli代码,我已经能够使用mysql数据库中的数据创建一个下拉框。sql语句从数据库中选择用户ID、f_名称和l_名称。这个列表是表单的一部分,当用户选择名称时,我只想通过$u Post方法传递userId。如何做到这一点?再次感谢你的帮助 <select name="names"> <option value = "">---Select---</option> <?php $queryusers = 'SEL

使用mysqli代码,我已经能够使用mysql数据库中的数据创建一个下拉框。sql语句从数据库中选择用户ID、f_名称和l_名称。这个列表是表单的一部分,当用户选择名称时,我只想通过$u 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>

就这样做吧:

echo '<option value="'.$names['userID'].'" >'.$names['f_Name'].' '. $names['last_nm'] . '</option>';
$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。如果您正在进行更新,您只需将插入中使用的任何变量替换为以下变量?占位符。它的工作原理是一样的


以下是手册:

将值设置为id,而不是名称。此外,除非有原因,否则您应该取出花括号。这并不重要,但如果可能,不在下拉列表中显示用户名,但仍显示名字和姓氏将增强安全性。这可能吗?这真的不会提高那么多安全性。从在数据库中使用主键之类的东西的角度来看,这样做更好。如果您想提高安全性,那么在提交时应该使用预先准备好的语句。我发现,使用诸如ID之类的键管理数据比使用姓氏/名字组合要容易得多。这些对可读性有好处。我同意你关于使用密钥管理数据的评论&userID是我数据库中的主键。我花了大约2天半的时间试图让下拉列表在那个前提下工作,但没有成功,所以我放弃了,走了这条路。我真的很想看看您的解决方案是什么样子的,使用主键创建下拉列表并将主键值传递给&\u POST。我知道这是额外的工作,如果你不想,我会完全理解。再次感谢。刚才不是这样吗?我假设这是一个主键,但我不知道您的表是如何构造的。这就是将要提交的内容。复合名/姓组合只是将显示的内容,但它与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();