0

这是我的代码-

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

4

3 回答 3

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 字符串。在您的示例中,您将函数应用于已连接的数据。

于 2010-11-15T16:35:36.807 回答
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";
于 2010-11-15T16:36:57.583 回答
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 以确保您也为每个项目获得正确的查询。

于 2010-11-15T16:38:31.260 回答