Member 12989102 Ответов: 3

Как вставить массив в БД mysql (foreach)


$txt = <<<EOL
    934030913 G 9RUPISOLV 20BUST 00001 P 04
    0055 G 0CIBALGINA DUE FAST*24CPR 200MG 00001 P 01
        EOL;
        
        $specialChars = preg_quote( '#$%^&*()+=-[]\';,./{}|\":<>?~', '#' );
        preg_match_all(
            '#([0-9]{4,9}\s+[A-Z]{1}\s+([' . $specialChars . 'A-Z0-9 ]+)\s+([0-9]{3,7})n?\s+P\s+([0-9]+))#',
            $txt, $match
        );


Пример массива:

[0] => Array ( [0] => 934030913 G 9RUPISOLV 20BUST 00001 P 04 
                      [1] => 0055 G 0CIBALGINA DUE FAST*24CPR 200MG 00001 P 01 ) 
       [1] => Array ( [0] => 934030913 G 9RUPISOLV 20BUST 00001 P 04 
                      [1] => 0055 G 0CIBALGINA DUE FAST*24CPR 200MG 00001 P 01 ) 
       [2] => Array ( [0] => 9RUPISOLV 20BUST
                      [1] => 0CIBALGINA DUE FAST*24CPR 200MG ) 
       [3] => Array ( [0] => 00001
                      [1] => 00002 ) 
       [4] => Array ( [0] => 04 
                      [1] => 01) )


Мне нужно вставить match[2][x] match[3] [x] match[4] [x] (из всех результатов) в БД mysql, я думаю, с foreach, но я не знаю как!

[2] => Array ( 	[x] => PRODUCT ) in product column    |
    [3] => Array ( 	[x] => QUANTITY) in quantity column   |  ONE RECORD
    [4] => Array ( 	[x] => NUMBER ) in terminal column    |


Как я могу это сделать?

Что я уже пробовал:

$indexes = array(2, 3, 4); 
	foreach ($indexes as $index) { 
		foreach ($match[$index] as $value) { 
			$sql = "INSERT INTO `table`(`product`) VALUES ('{$value}');"; mysql_query($sql); } }
?>

3 Ответов

Рейтинг:
2

Patrice T

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL Injection-руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL-OWASP[^]


Member 12989102

Не волнуйтесь, эта услуга предназначена для внутреннего веб-приложения, она не является общедоступной!
Почему нет никакого решения?

Patrice T

Сегодня воскресенье, дела всегда идут медленно.

Рейтинг:
2

RickZeeland

Я не программист PHP, но, возможно, эти ссылки помогут вам начать работу:
PHP подключается к MySQL[^]
PHP вставляет несколько записей в MySQL[^]
PHP и MySQL[^]

Вот пример foreach, который я нашел на PHP: foreach-руководство пользователя[^]

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
?>


Member 12989102

Я знаю, как использовать mysql, но я не знаю, как использовать foreach (php) для моего случая!
Если кто-то может сделать это на C# или VB.NET - для меня он делает то же самое!
Мне это нужно, когда файл редактируется с помощью регулярного выражения:
#([0-9]{4,9}\s+[A-Z]{1}\s+ (['. $specialChars. ' A-Z0-9 ]+)\s+([0-9]{3,7}) n?\s+P\s+([0-9]+)# он ищет то, что я хочу, и вставляет его в базу данных mysql

Member 12989102

Я знаю (не очень хорошо), как работает foreach. Но я не знаю, как я могу получить это:

матч [2] [0] + матч [3] [0] + матч [4] [0]
[2] = & gt; Array ([0] = & gt; 9RUPISOLV 20BUST) в столбце PRODUCT +
[3] => Array ([0] = & gt; 00001) в столбце количество +
[4] => Array ([0] = & gt; 04) в терминальном столбце

После этого цикл придется продолжить
матч [2] [1] + матч [3] [1] + матч [4] [1]
[2] = & gt; Array ([1] => 0CIBALGINE TWO FAST * 24CPR 200MG)) в колонке продукта +
[3] => Array ([1] = & gt; 00002) в столбце количество +
[4] => Array ([1] = & gt; 01) в терминальном столбце

и т.д...

Рейтинг:
0

Member 12989102

Не волнуйтесь, эта услуга предназначена для внутреннего веб-приложения, она не является общедоступной!
Почему нет никакого решения?


RickZeeland

CodeProject, вероятно, имеет больше C# / VB.NET программисты, чем PHP-программисты, также имеют в виду, что в воскресенье они могут делать другие вещи.
Но если вы не получите никакого ответа, вы можете попробовать другой сайт, такой как StackOverflow, удачи !

Member 12989102

я написал на stackoverflow но мне никто не помог
https://stackoverflow.com/questions/46143280/how-insert-array-in-a-mysql-db-foreach#comment79248309_46143280