将输入中的逗号分隔文本插入数据库,而不重复enrty

时间:2015-05-12 12:27:34

标签: php mysql arrays mysqli

我的数据库中有一个名为“Cities”的预定义城市列表。

id     name
1      City1
2      City2
3      City3
4      City4

用户需要以逗号分隔格式在输入字段中添加他访问过的城市,因此如果“城市”表中存在,则需要逐个检查他在表单中添加的所有城市。如果它存在,则在“city_visited”表中的“城市”中插入用户ID和城市ID,如果它不存在,则先将其插入“城市”,然后插入“city_visited”表。

我可以通过爆炸获得城市

$city_list  = "city1,city2,city3,city4,city5,city6";
$city_visited = explode(",", $city_list);
$city_visited[0];
$city_visited[1];

我如何知道用户输入的城市数量,然后检查“城市”表格中的任何现有数据,然后在“city_visited”表格中添加城市的ID。

id     city_id    user_id
1      1          1
2      2          1
3      3          1
4      4          1

1 个答案:

答案 0 :(得分:0)

不确定这是否是最佳解决方案,但您可以尝试从这个想法开始:

name的{​​{1}}列上创建一个索引,并确保该字段为Cities,当您在插入数据库之前拆分unique时,make每个$city_list大写的项目。

所以在你的表中你会有

$city_visited

这样,db将确保id name 1 CITY1 2 CITY2 3 CITY3 4 CITY4 字段是唯一的,因为如果您尝试插入另一个时间City1,则索引会启动并产生重复键错误。

唯一遗漏的是,如果有人输入错误拼写的城市名称,但我认为这是不可避免的。

希望这个帮助