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')が3つではなく1つのレコードとして取得している理由です。

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')

私は忘れていました: SQL文字列ではなく、実際のデータmysql_real_escape_stringような関数のみを使用してください。あなたの例では、すでに連結されたデータに関数を適用します。

于 2010-11-15T16:35:36.807 に答える
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 に答える
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 に答える