我正在尝试将多个标签插入数据库。 我正在使用TokenInput插件来收集用户的标签。 我得到一串用逗号分隔的标签,如下所示:
if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;
echo $data;
}
数据来自ajax函数。当回显$ data时,我得到一个这样的字符串:
扎拉,Allsaints
然后我继续通过explode()分离它们并循环创建的数组。
if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;
for($x = 0; $x < count($tags); $x++) {
mysql_query("INSERT INTO tags (tagid, tagname, snapid) VALUES ('', '$tags[x]', '$snap')");
}
}
此代码会将空值插入'tagname'。您是否有任何建议我应该更改以使其工作?我应该重写循环代码吗? 谢谢你的帮助。
答案 0 :(得分:2)
管理这样做。这很容易,在发布之前应该多考虑一下。 所以我现在的代码是:
if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;
for($x = 0; $x < count($tags); $x++) {
mysql_query("INSERT INTO tags (tagid, tagname, snapid) VALUES ('', '" . $tags[$x] . "', '$snap')");
}
}
有了这个,我可以插入与数组内部一样多的标签。 希望有人会发现这有用的一天。 感谢
答案 1 :(得分:0)
您可以使用更优化的批量插入,并修复生成sql值字符串:
<?php
if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;
$values = array_map(function($item) use($snap) {
return "('', '".$item."', '".$snap."')";
}, $tags);
$sql = "INSERT INTO tags (tagid, tagname, snapid) VALUES ".
implode(",", $values);
mysql_query($sql);
}