2010-11-15 6 views
0

здесь мой code-как вставить массив данных в базу данных

$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') вот почему она принимает его в качестве одной записи не три.

ответ

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

+0

Jio лишь Лала ... – ppp

+0

@ppp: Я не понимаю, но я надеюсь, что это означает, спасибо;) –

+0

это значит крутой чувак ... – ppp

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"; 
+0

Вам нужно PHP 5.3 для этого, не так ли? –

+0

no not для array_map, для анонимной функции, возможно, вам понадобится create_function вместо того, что я сделал, но это все еще можно сделать http://php.net/manual/en/function.array-map.php http://us.php.net/manual/en/function.create-function.php http://php.net/manual/en/functions.anonymous.php –

+0

что еще более важно, я забыл о парнах –

0

Вы интегрировались вещи, которые в настоящее время массив, так что вам нужно перебрать это с петлей Еогеасп, такие как ...

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

Но это делает три вызова БД .... и '$ things' не является массивом, это строка. –

+0

К сожалению, моя ошибка. Как насчет использования str_replace $ things = str_replace (',' '), (', $ things); – user466764

Смежные вопросы