我正在使用以下代码来获取表单的数据并发送到MYSQL:
$id=$_POST['id'];
$tag=$_POST['tag'];
$race=$_POST['race'];
$city=$_POST['city'];
$pic=($_FILES['photo']['name']);
并使用以下方法将其插入我的表格中
mysql_query("INSERT INTO `people` VALUES ('$id', '$tag', '$race', '$city', '$pic')") ;
我的问题是我需要允许用户在表单的“标记”字段中输入多个值(以逗号或空格分隔),以允许在同一图像中标记多个人。
所以我有2个问题。首先,为每个'bib'标签创建全新的数据库条目是最佳做法吗?或者将逗号分隔列表存储在单个列中会更好吗? 其次,我被建议使用爆炸功能。但是,我无法弄清楚如何将其转换为我当前的INSERT查询。如果有人能引导我朝着正确的方向前进,我真的很感激。非常新的PHP,只是想自学一些基础知识。
感谢。
答案 0 :(得分:1)
所以我有2个问题。首先,为每个'bib'标签创建全新的数据库条目是最佳做法吗?或者将逗号分隔列表存储在一个列中会更好吗?
在数据库列中存储以逗号分隔的列表通常是一个错误。这将使编写查询(例如)查找给定人员已被标记的图像变得非常困难。您应该阅读数据库规范化。通常情况下,在这种情况下你会做什么,给定的照片可以包含任意多的人,有一个表image_person
有两列:一列指定图像ID,另一列指定一个人。表中的一行对应于“此人已在此图像中被标记”的陈述。这样可以更轻松地查询您存储的信息。
其次,我被建议使用爆炸功能。
假设您没有使用逗号分隔列表方法(正如我所建议的那样),您可能需要在此代码中使用爆炸的唯一地方是,如果您将要标记为逗号的人员列表传递给其中一个POST变量中的分隔列表。在这种情况下,您可能会执行以下操作:
$tags = explode(',', $_POST['tags']);
然后您可以选择以下两种方法之一:
其他评论
请阅读 SQL注入并确保编写安全代码。您在问题中发布的代码非常不安全。
答案 1 :(得分:0)
如果只对表中的一列使用逗号分隔的标签,那很好。
这次不会使用爆炸功能。当您从db中提取这些值以进行进一步处理时,将使用它。
如果逗号分隔的字符串保存在db中,那么当你需要它时,你可以做类似的事情
$arr = explode(",",$_row['tag']);
其中$ _row ['tag']是fetch上标记的数据值。
答案 2 :(得分:0)
在$ tag = $ _POST ['标记'];
你包含标签列表,所以现在你只需使用explode函数来获取这些值。
为此你必须遵循给定的代码
$tag=$_POST['tag'];
$arrs=explode(", ",$tag);
foreach($arrs as $arr){
$insertTag .= $arr;
}
echo $insertTag;
mysql_query("INSERT INTO `people` VALUES ('$id', '$insertTag', '$race', '$city', '$pic')") ;