如何将数据数组插入数据库

时间:2010-11-15 16:32:53

标签: php implode

这里是我的代码 -

$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')这就是为什么它将它作为一个记录而不是三个记录。

3 个答案:

答案 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,以确保您也可以获得每个项目的查询。

相关问题