Вставьте массив PHP Regex в таблицу MySQL - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть массив, который я взорвал с помощью 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 l oop:

<code>foreach ($data as $data) {


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

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

Имя моей таблицы" algeaSpecies ", а столбцы:" id "," genusName " "," видамиEpiteth "," автором "," публикацией "," турецким именем "

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

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

это для видаEpiteth;

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

и другие ...

here is a final image

Я использую MySQLi

Спасибо

1 Ответ

0 голосов
/ 06 апреля 2020

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

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

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

$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();
...