Как добавить вторую переменную

19
11 января 2017, 04:05

С массивом $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);
Answer 1

Вам нужен некий конструктор запроса, который добавит несколько значений за раз:

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.

Answer 2

У Вас очень старый код, либо учебник.

Функции 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-запросе приводит к уязвимости. Учитесь писать правильно с самого начала - используйте подготовленные запросы.

Answer 3
function addRow($array){
    $query = "INSERT INTO `opisanie` (`text`,`text_opis`) VALUES ('" . implode("','", $array) . "')";
    $res = mysql_query($query);
}
addRow(array('один','два','три'));
addRow(array('один_один','два_два','три_три'));

Так должно работать

Answer 4
 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);

Это если количество элементов в обоих массивах одинаковое.

Answer 5

Похоже вы пытаетесь сделать что-то типа такого:

$array = array('один','два','три');
$arrayy = array('один_один','два_два','три_три');
$query = 'INSERT INTO opisanie (text,text_opis) 
          VALUES ("'.implode('", "', $array ).'"),
                 ("'.implode('", "', $arrayy ).'")';
$res = mysql_query($query);

У вас все равно остается масса косяков для исправления:

  • использование mysql расширения
  • вставляются 3 значения, хотя пишите 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);
READ ALSO
Вопрос по for и break

Вопрос по for и break

Если писать так:

29
Выборка из MySQL без повторений хотя бы одного значения

Выборка из MySQL без повторений хотя бы одного значения

Доброго времени суток, друзьяЕсть необходимость вывести из БД значения из определенного столбика

23
Как в php строку умножить на число?

Как в php строку умножить на число?

К примеру хочу строку "aaa" умножить на число 3, чтобы было "aaaaaaaaa"

40