INSERT трех массивов в три столбца в БД

knak

Новичок
Всем привет!
Особенно Фанату ... тонко намекая, что я прочитал не одну ветку этого форума. :)

Сейчас меня все равно кто-то будет пинать, но я уже прочитал кучу всякого бесполезного, но нужной инфы не нашел.

Суть:
есть вот массивы - 4 штуки:

preg_match_all ('~aaa(.*)aaa~Usi', $text, $matches1);
preg_match_all ('~bbb(.*)bbb~Usi', $text, $matches2);
preg_match_all ('~ccc(.*)ccc~Usi', $text, $matches3);
preg_match_all ('~ddd(.*)ddd~Usi', $text, $matches4);

Чтобы запилить один массив в БД делаю так:

foreach ($matches1[0] as $data1) {
$sql_result = mysql_query("INSERT INTO `base` (`cid`) VALUES ( '$data1')" ,$db) or die ('error insert');
}

А как сделать так, чтобы все эти 4 массива разом запиливались? Типа вот так:
.. INSERT INTO `base` (`cid1`, `cid2`, `cid3`, `cid4`) VALUES ( '$data1', '$data2', '$data3', '$data4')...

Надеюсь, что адекватно описал проблему...
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
Чтобы находить ответы на подобные вопросы самостоятельно, нужно научиться формулировать на естественном языке проблему.

Сейчас, например, не очень понятно: тебя интересует вставка в несколько колонок (column) или ты так сформулировал проблему вставки нескольких записей (rows) в таблицу одним запросом? Если ты забыл как называются вот эти вот вертикальные и горизонтальные «ряды» в таблице, то можно поискать сначала по слову «таблица». Это может всё звучать унизительно, но махания руками вместо грамотного вопроса выглядит ещё хуже.
 

knak

Новичок
Чтобы находить ответы на подобные вопросы самостоятельно, нужно научиться формулировать на естественном языке проблему.
Я не удивлен :)

Но я думал, что будет более или менее понятно, что в таблице, в которую я хочу впихнуть данные - 4 колонки. В первую запилить массив $matches1, во вторую $matches2, в третью $matches3, в четвертую $matches4. В каждом массиве по 100 значений. То есть должна получиться таблица - 4 столбца и 100 строк. Как-то так...
 

Вурдалак

Продвинутый новичок
Похоже, твоя проблема не связана с базами данных. У тебя просто есть 4 массива и при условии, что количество элементов в них совпадает, тебе нужно в каждой итерации получать значения из каждого массива. Тебе стоит изучить языковую конструкцию for или обратить внимание на расширенный вариант foreach, который позволяет получить текущий индекс. Зная текущий индекс, ты можешь получить элемент из каждого массива.

Хотя лично я бы сначала попытался понять нельзя ли получить один массив, сделав, например, один вызов preg_match_all(), потому что так было бы чище.
 

knak

Новичок
.... обратить внимание на расширенный вариант foreach, который позволяет получить текущий индекс. Зная текущий индекс, ты можешь получить элемент из каждого массива....
ААА!!! Да почему же с одним столбцом всё просто, а с двумя-тремя-четырьмя такой дикий головняк!?!?! Я сколько читаю про foreach, никак не пойму, каким боком его использовать с тремя-четырмя массивами. Для двух еще как-то можно отделаться array_combine...

Я как-то думал, что есть какой-то простейший пример выполнения этой задачи, но я его тут никогда не получу по всей видимости...

Спасибо за уделенное время. Мозг опух еще сильнее. Про один вызов preg_match_all() вообще не понял, как это, один вызов для четырех разных условий?
 

knak

Новичок
Я безобразно умён

foreach ($massive1 as $key => $arr1_value)
{
$arr1_value = $massive1[$key];
$arr2_value = $massive2[$key];
$arr3_value = $massive3[$key];
$arr4_value = $massive4[$key];


$sql = mysql_query("INSERT INTO `base` (`cid1`, `cid2`, `cid3`, `cid4`) VALUES ( '$arr1_value', '$arr2_value', '$arr3_value', '$arr4_value') ") or die (mysql_error());
}
 

fixxxer

К.О.
Партнер клуба
@knak, это он тонко намекает на то, что функции mysql_ объявлены устаревшими начиная с php 5.5 (то есть 4 года назад) и удалены начиная с php 7.0.

Таким образом, единственная ныне поддерживаемая версия php, где этот код будет работать - это 5.6, и та через год перестанет поддерживаться, так что переписывать на mysqli или pdo придется в любом случае.

Советую ознакомиться с материалом: http://phpfaq.ru/pdo
 
  • Like
Реакции: knak

knak

Новичок
@knak, это он тонко намекает на то, что функции mysql_ объявлены устаревшими начиная с php 5.5 (то есть 4 года назад) и удалены начиная с php 7.0.

Таким образом, единственная ныне поддерживаемая версия php, где этот код будет работать - это 5.6, и та через год перестанет поддерживаться, так что переписывать на mysqli или pdo придется в любом случае.

Советую ознакомиться с материалом: http://phpfaq.ru/pdo
Спасибо! Ознакомился. Всё это как-то прискорбно выглядит... Но на сколько я понимаю, без моего ведома/разрешения мой хостинг провайдер не переведет меня на php 7.0. Ведь мне разом нужно будет переписать километры кода, что вообще не хочется делать. Мне кажется это мало кому интересно, переделывать то, что и так нормально работает.

апд. да, посмотрел у себя на хостинге, для каждого сайта сам выбираю версию php. Может быть... Когда нибудь... Заморочусь и изучу детально 7.0, а пока ну его в баню...
 
Последнее редактирование:

knak

Новичок
Ага. Так и возникают из небытия такие вот попаданцы, как в соседней ветке :)))
Ну я конечно соглашусь, что лучше двигаться в ногу со временем, но.... Это слишком много времени. Да и не программист я вообще. Мне почти каждый шаг гуглить приходится. А по 7.0 наверняка пока мало примеров и инфы для нубов. Такие дела. Да я же тут всех тогда достану с глупыми вопросами))))
 

Фанат

oncle terrible
Команда форума
Вопрос вопросу рознь.
Если демонстрирует факт, полученный собственноручно, то ему легко и приятно ответить.
А если фантазирует, не написав ни строчки кода - то тогда конечно да, на такой вопрос отвечать скучно.
 
  • Like
Реакции: knak

fixxxer

К.О.
Партнер клуба
на сколько я понимаю, без моего ведома/разрешения мой хостинг провайдер не переведет меня на php 7.0
Пока - нет. Но через год 5.6 перестанет поддерживаться вообще, это означает, что если найдется какая-то (даже серьезная) уязвимость, в ветке 5.6 ее никто исправлять не будет. Тогда хостер будет вынужден либо самостоятельно закрывать дыры (а с этим не каждый хостер справится), либо жить с дырой и рисковать сайтами всех клиентов, либо придется переводить всех на семерку.

А по 7.0 наверняка пока мало примеров и инфы для нубов
За исключением удаления расширения mysql, на семерке можно писать ровно так же, как на пятерке, не используя новые возможности семерки. Все будет работать (есть редкие исключения, но на них ты не наткнешься с вероятностью 99%). А про PDO (которому, так-то, сто лет в обед) прекрасно все расписано в ссылке, которую я дал выше, уж не знаю, куда больше примеров.
 

knak

Новичок
Вопрос вопросу рознь.
Если демонстрирует факт, полученный собственноручно, то ему легко и приятно ответить.
А если фантазирует, не написав ни строчки кода - то тогда конечно да, на такой вопрос отвечать скучно.
Ох... как бы я не хотел ответить что-то умное, но я скорее тот самый скучный нуб, который шарит по интернетам в поисках чего-то похожего для моей задачи и немного насилует готовый пример под себя. Может... а нет... не может... ну не программист я... моя цель заработать деньги на том, что я придумал, а не на том, как я это написал. Пока получается. Не ахти, но мы стремимся к лучшему.

Пока - нет. Но через год 5.6 перестанет поддерживаться вообще, это означает, что если найдется какая-то (даже серьезная) уязвимость...
Искренне надеюсь, что в мои ГС (по моему мнению) никто не полезет... Ибо нет там ничего полезного и ломать там нечего.

За исключением удаления расширения mysql, на семерке можно писать ровно так же, как на пятерке...
Вот это позитивная новость. Даже появляется всё больше желания изучить эту неадекватчину. :)

Перевод: "Я даже пытаться не хочу, нафиг мне это надо!"
К сожалению, я полностью согласен. Ну не для этого я создан XD. У меня вот есть идея, которая была бы крайне популярна для таких как я, а может даже для тех, кто несколько умнее, чем я, но воплотить её в жизнь я не смогу. Недостаточно знаний... Но и трепать её тоже не хочется. Какая-то хрень в голове... Ох уж эти вьетнамские коктейли... Сорян, до связи ;)
 
Сверху