Php 2个不同的值存储在数据库的一列下
我有一张分类表Php 2个不同的值存储在数据库的一列下,php,mysql,sql,drop-down-menu,mysqli,Php,Mysql,Sql,Drop Down Menu,Mysqli,我有一张分类表 id catname 1 C1 2 C2 从下拉菜单中,我试图将所选值的名称和id带到后端并保存在数据库中 下拉菜单的代码为: <select name="catname"> <?php require 'connection.php'; $sql = "SELECT * FROM category"; $result = mysqli_query($con, $sql)
id catname
1 C1
2 C2
从下拉菜单中,我试图将所选值的名称和id带到后端并保存在数据库中
下拉菜单的代码为:
<select name="catname">
<?php
require 'connection.php';
$sql = "SELECT * FROM category";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result))
{
$catname=$row["catname"];
$catid=$row["id"];
?>
<option value="<? echo $catname;?> <? echo $catid;?>"><? echo $catname;?></option>
<?}
}?>
</select>
问题是,当我选择一个类别时,catname和catid的值位于同一个参数下。数据库中的值是这样存储的
id catname catid subcatname
1 C2 2 S1
id catname catid subcatname
1 C2 2 S1
有人能告诉我如何正确地执行吗?您所做的一切都是正确的,只需检查您的下拉名称可能是您没有发送到$_POST['catid']变量。在下拉代码中,
$catid=$row['id']代码>应该是$catid=$row[“catid”]代码>只需更改您的选择框
即可
<option value="<? echo $catname;?>$<? echo $catid;?>"><? echo $catname;?></option>
希望它能起作用。请检查explode
语法,因为我不是php高手
但是我不想发送“catname
”,因为发送“catid
”就足够保存在数据库中了。在子类别表中同时保存“catname
”和“catid
”会导致数据冗余,从而影响数据库规范化
谢谢。您应该在下拉列表中存储类别名称和类别Id,然后在传递到查询之前进行拆分。这样做:
将您的选项设置为:
<option value="<? echo $catname.'-'.$catid;?>"><? echo $catname;?></option>
并在查询中传递变量$catename和$catid
请让我知道更多帮助。除非类别名称类似于“$$$CASHMONEY$$$$”并且会发生有趣的事情。混合使用用户输入数据和字符串映射可能是危险的。@rockerBOO,你说得对。但我不希望发送“catname”,因为发送“catid”就足以保存在数据库中。在子类别表中同时保存“catname”和“catid”会导致数据冗余,从而影响数据库规范化。我只是想问一下这个问题的答案。谢谢
$subcatname = mysqli_real_escape_string($con, $_POST['subcatname']);
$catname = mysqli_real_escape_string($con, explode('$', $_POST['catname'])[0]);
$catid = mysqli_real_escape_string($con, explode('$', $_POST['catname'])[1]);
<option value="<? echo $catname.'-'.$catid;?>"><? echo $catname;?></option>
$catdetail = mysqli_real_escape_string($con, $_POST['catname']);
list($catname, $catid) = explode('-', $catdetail);