Вставить разнесенный массив регулярных выражений PHP в таблицу MySQL

У меня есть массив, который я взорвал с помощью Regex, вот часть массива с именем $ data;

array(6) {
  [0]=>
  array(1) {
    [0]=>
    string(77) "Achnanthes brevipes C.Agardh, Syst. Alg.: 1 (1824). / Küçük sucıncığı."
  }
  [1]=>
  array(1) {
    [0]=>
    string(10) "Achnanthes"
  }
  [2]=>
  array(1) {
    [0]=>
    string(8) "brevipes"
  }
  [3]=>
  array(1) {
    [0]=>
    string(8) "C.Agardh"
  }
  [4]=>
  array(1) {
    [0]=>
    string(21) "Syst. Alg.: 1 (1824)."
  }
  [5]=>
  array(1) {
    [0]=>
    string(22) "Küçük sucıncığı"
  }
}
array(6) {
  [0]=>
  array(1) {
    [0]=>
    string(89) "Achnanthes cocconeiformis Mann, U.S. Nat. Mus., Bull. 6: 182 (1925). / Top sucıncığı."
  }
  [1]=>
  array(1) {
    [0]=>
    string(10) "Achnanthes"
  }
  [2]=>
  array(1) {
    [0]=>
    string(14) "cocconeiformis"
  }
  [3]=>
  array(1) {
    [0]=>
    string(4) "Mann"
  }
  [4]=>
  array(1) {
    [0]=>
    string(36) "U.S. Nat. Mus., Bull. 6: 182 (1925)."
  }
  [5]=>
  array(1) {
    [0]=>
    string(17) "Top sucıncığı"
  }
}
array(6) {
  [0]=>
  array(1) {
    [0]=>
    string(108) "Achnanthes gibberula Grunow, Kongl. Svenska Vetensk.-Akad. Handl. 17(2): 121 (1880). / Kambur sucıncığı."
  }
  [1]=>
  array(1) {
    [0]=>
    string(10) "Achnanthes"
  }
  [2]=>
  array(1) {
    [0]=>
    string(9) "gibberula"
  }
  [3]=>
  array(1) {
    [0]=>
    string(6) "Grunow"
  }
  [4]=>
  array(1) {
    [0]=>
    string(55) "Kongl. Svenska Vetensk.-Akad. Handl. 17(2): 121 (1880)."
  }
  [5]=>
  array(1) {
    [0]=>
    string(20) "Kambur sucıncığı"
  }
}

и многое другое ..

мое регулярное выражение:

$turRegex = '/^([^\s]+)[\s]([^\s]+)[\s]([^\s]+)[,][\s]([A-Za-z].+)[\s][\/][\s](.+)[.]/m';

мой цикл foreach:

foreach ($data as $data) {


    if (!empty(preg_match_all($turRegex, $data, $matches))) {

        echo "<pre>";
        var_dump($matches);
        echo "</pre>";

    }
}

Имя моей таблицы - «algeaSpecies», а столбцы -; «id», «genusName», «viewsEpiteth», «автор», «публикация», «TurkishName»

Я хочу вставить это в genusName;

[1]=>
  array(1) {
    [0]=>
    string(10) "Achnanthes"

это для разновидностейEpiteth;

  [2]=>
  array(1) {
    [0]=>
    string(8) "brevipes"
  }

и другие...

Изображение 88457

Я использую MySQLi

Спасибо

# arrays multidimensional-array foreach mysqli
Источник
Codelisting
за 0 против

Сначала я заметил, что ты использовал$data как массив, так и элемент в вашем цикле.

В следующем коде я предположил, что вам не нужен первый индекс (запрос был непонятным).

Также замените учетные данные для подключения к БД.

$con = new mysqli('db_host', 'username', 'password', 'db_name');
$boundArray = array_fill(0, 5, null);
$query = "INSERT INTO `algeaSpecies` (`genusName`, `speciesEpiteth`, `author`, `publication`, `TurkishName`) VALUES (?,?,?,?,?);";
$stmt = $con->prepare($query);
$stmt->bind_param("sssss", ...$boundArray);


foreach ($data as $item) {
    $i = -1;
    foreach ($item as $index) {
        if ($i === -1) {
            $i++;
            continue;
        }
        $boundArray[$i++] = $index[0];
    }
    $stmt->execute();
}
$stmt->close();
$con->close();
  • 0
    Я правда не понял
  • 0
    Какая часть? Строка 1 - это соединение с БД, строка 2 - это массив для привязки к подготовленному оператору со значениями по умолчанию, строки 3–5 - это подготовка базы данных. Логика происходит в цикле: получить каждый индекс и заполнить boundArray его значением, а затем выполнить подготовленный оператор.
  • 0
    Вы проверили, что это работает? Я несколько скептически отношусь к этому исполнению в цикле. Вы разбрасываете массив, и я не уверен, сохраняет ли он ссылку.
  • 0
    Я протестировал его на основе предоставленной вами структуры данных. Я разделил $ data 2 раза, чтобы перейти к данным (на основе предоставленной вами структуры данных). Если вам нужны $ index и $ item, сохраните ссылки, которые вы могли бы добавить & перед ними ($ data как & $ item), но я не уверен, зачем вам это нужно?
Codelisting
Популярные категории
На заметку программисту