С массивом $array все работает верно, добавляется определенное количество строк и заносится в каждую строку ячейка со значением $array = $_POST[form_text_o]; , но вот как мне сделать чтобы добавлялось две ячейки где в первой значение $array, а вторая ячейка со значением $arrayy
$array = $_POST[form_text_o];
$arrayy = $_POST[form_text_opis];
$query = "INSERT INTO opisanie (text,text_opis) VALUES ('" . implode("'), ('", $array ) . "')";
$res = mysql_query($query);
Вам нужен некий конструктор запроса, который добавит несколько значений за раз:
function createQuery($a, $b){
$query = "INSERT INTO opisanie (text,text_opis) VALUES ";
$limit = count($a);
for($i=0; $i<$limit; $i++){
$query .= "('{$a[$i]}', '{$b[$i]}')".($i!=$limit-1?',':'');
}
return $query;
}
$aText = array('один','два','три');
$aOpis = array('один_один','два_два','три_три');
$query = createQuery($aText, $aOpis);
$res = mysql_query($query);
Нужно понимать что нужно еще проверить кол-во значений в массиве, необходимо одинаковое кол-во, иначе будут ошибки, обработать данное поведение. Проверить заранее что там вам приходит в пост массивах, безопасность как никак. Забыть об использовании mysql
(если вам конечно не надо работать в старых версиях), и пользоваться mysqli
или pdo
.
У Вас очень старый код, либо учебник.
Функции mysql_*
не просто устаревшие, а удалённые из последних версий php.
Мой пример использует PDO
$input = [
['hello', 'some', 'text'],
['world', 'message', 'description'],
];
$db = new PDO('mysql:host=localhost;dbname=testme', 'user', 'password');
$stmt = $db->prepare('INSERT example(col1, col2) value(?, ?)');
for ($i = 0; $i < count($input[0]); ++$i) {
$row = array_column($input, $i);
$stmt->execute($row);
}
В Вашем случае:
$input = [
$_POST['form_text_o'],
$_POST['form_text_opis'],
];
Использование конкатенации в SQL-запросе приводит к уязвимости. Учитесь писать правильно с самого начала - используйте подготовленные запросы.
function addRow($array){
$query = "INSERT INTO `opisanie` (`text`,`text_opis`) VALUES ('" . implode("','", $array) . "')";
$res = mysql_query($query);
}
addRow(array('один','два','три'));
addRow(array('один_один','два_два','три_три'));
Так должно работать
function addRow($arr1, $arr2){
for ($i=0;$i<count($arr1);$i++){
$query=sprintf("INSERT INTO opisanie (text,text_opis) VALUES('%s','%s')", $arr1[$i], $arr2[$i] );
$res = mysql_query($query);
}
}
addRow($array, $arrayy);
Это если количество элементов в обоих массивах одинаковое.
Похоже вы пытаетесь сделать что-то типа такого:
$array = array('один','два','три');
$arrayy = array('один_один','два_два','три_три');
$query = 'INSERT INTO opisanie (text,text_opis)
VALUES ("'.implode('", "', $array ).'"),
("'.implode('", "', $arrayy ).'")';
$res = mysql_query($query);
У вас все равно остается масса косяков для исправления:
mysql
расширенияopisanie (text,text_opis)
, т.е. ожидаете только два.mysqli
или PDO
, которым надо будет заменить mysql
P.S. Ну и напомню, что в MySQL можно добавлять несколько VALUES
за раз: https://dev.mysql.com/doc/refman/5.5/en/insert.html
как пример
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Доброго времени суток, друзьяЕсть необходимость вывести из БД значения из определенного столбика
К примеру хочу строку "aaa" умножить на число 3, чтобы было "aaaaaaaaa"