这里是我的代码 -
$things = mysql_real_escape_string(implode(',', $_POST['things']),$link);
$q = "INSERT INTO tblslider(src) VALUES ('".$things."')";
print_r($q);
$result = $mysqli->query($q) or die(mysqli_error($mysqli));
但我的查询已生成
INSERT INTO tblslider(src) VALUES ('4368122.jpg,5440051.jpg,1047428.jpg')
但它应该是
INSERT INTO tblslider(src) VALUES ('4368122.jpg'),('5440051.jpg'),('1047428.jpg')
这就是为什么它将它作为一个记录而不是三个记录。
答案 0 :(得分:5)
你可以这样做:
$things = array_map('mysql_real_escape_string', $_POST['things']);
$q = "INSERT INTO tblslider(src) VALUES ('". implode("'),('", $things)."')";
它生成(使用我的测试数据):
INSERT INTO tblslider(src) VALUES ('a.jpg'),('b.jpg'),('c.jpg')
我忘了:只在真实的数据上使用mysql_real_escape_string
等函数,而不是SQL字符串。在您的示例中,您将对已连接的数据应用该函数。
答案 1 :(得分:0)
试试这个:
$formatVals = function($x){$rx = mysql_real_escape_string($x); return "('$rx')";};
$valString = implode(',', array_map($formatVals, $_POST['things']);
$sql = "INSERT INTO tblslider (src) VALUES $valString";
答案 2 :(得分:0)
你已经破坏了现在是一个数组的东西,所以你需要用foreach循环来迭代它,比如......
foreach ($things as $item) {
$q = "INSERT INTO tblslider(src) VALUES ('".$item."')";
echo '<br />'.$q;
$result = $mysqli->query($q) or die(mysqli_error($mysqli));
}
您可以回显$ q,以确保您也可以获得每个项目的查询。