как вставить массив данных в базу данных - PullRequest
0 голосов
/ 15 ноября 2010

здесь мой код -

$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 ]

5 голосов
/ 15 ноября 2010

Вы можете сделать:

$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 на real данные, а не строка SQL.В вашем примере вы применяете функцию к уже объединенным данным.

0 голосов
/ 15 ноября 2010

Вы взорвали вещи, которые теперь являются массивом, поэтому вам нужно повторить это с помощью цикла 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, чтобы убедиться, что вы получаетезапросы для каждого элемента также.

0 голосов
/ 15 ноября 2010

попробуйте это:

$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";
...