MySQL копировать таблицу на сервере на локальный сервер с переполнением стека

Я хочу скопировать данные таблицы на сервере на локальный сервер с помощью PHP.

Это скрипт у меня

<?php

$h_local = "localhost";
$u_local = "root";
$p_local = "";
$db_local = "";$h_server = "localhost";
$u_server = "root";
$p_server = "";
$db_server = "";

$server = new mysqli($h_server,$u_server,$p_server,$db_server);

$local = new mysqli($h_local,$u_local,$p_local,$db_local);

$result = $local->query("SELECT * FROM b_barang");

while ($row = $result->fetch_assoc()) {
foreach ($row as $field => $value) {
$fields .= "$field, ";
$values .= "'$value', ";
}
// remove trailing ", " from $fields and $values
$fields = preg_replace('/, $/', '', $fields);
$values = preg_replace('/, $/', '', $values);

$sql = "INSERT INTO b_barang ($fields) VALUES ($values)";
$arr[] = $sql;

}foreach($arr as $a){
$server->query($a);
echo $a."<br><br>";
}
?>

Результат в первом массиве, как

FIRST RESULT

INSERT INTO b_barang (Коде, Нама, Сатуан, HP, PPN, Дискон, HJ,
Kemasan, Margin, Saldo, TglPesan, Batmin, Batmak, HPAwal, PPNAwal,
DiskonAwal, HJAwal, IsiKemasan, HPKemasan, HPKemAwal, HPPAverage,
HPPAverageAwal, Jenis, HPP, HPPAwal, SaldoTemp, SaldoInput, Поставщик)
ЦЕННОСТИ (‘3’, ‘barang 3’, », », », », », », », », », », »,
», ‘0’, », ‘0’, ‘0’, ‘0’, ‘0’, », », », », », ‘0’, ‘0’, ‘ «)

и следующий результат неправильный, как добавление значений из первого результата

`SECOND RESULT`

INSERT INTO b_barang (Коде, Нама, Сатуан, HP, PPN, Дискон, HJ,
Kemasan, Margin, Saldo, TglPesan, Batmin, Batmak, HPAwal, PPNAwal,
DiskonAwal, HJAwal, IsiKemasan, HPKemasan, HPKemAwal, HPPAverage,
HPPAverageAwal, Jenis, HPP, HPPAwal, SaldoTemp, SaldoInput,
SupplierKode, Nama, Satuan, HP, PPN, Diskon, HJ, Kemasan, Margin,
Saldo, TglPesan, Batmin, Batmak, HPAwal, PPNAwal, DiskonAwal, HJAwal,
IsiKemasan, HPKemasan, HPKemAwal, HPPAverage, HPPAverageAwal, Jenis,
ГЭС, HPPAwal, SaldoTemp, SaldoInput, Поставщик) ЦЕННОСТИ («3», «Баранг»
3 ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ ‘,’ 0 ‘,’ ‘,’ 0 ‘, ‘0’,
‘0’, ‘0’, », », », », », ‘0’, ‘0’, » ‘1’, ‘barang1’, », », »,
», », », », », », », », », ‘0’, », ‘0’, ‘0’, ‘0’, ‘0’, »,
», », », », ‘0’, ‘0’, »)

как вы можете видеть значения в результате 2, добавляя значения из результата 1.

как я могу решить это?

0

Решение

Все, что вам нужно сделать, это очистить $fields а также $values переменные каждый раз вокруг вашего цикла. В настоящее время вы добавляете второй запрос к первому, а затем третий запрос к первому и второму … и т. Д.

while ($row = $result->fetch_assoc()) {

// clear out these 2 variables before starting another iteration
$fields = '';
$values = '';

foreach ($row as $field => $value) {
$fields .= "$field, ";
$values .= "'$value', ";
}
// remove trailing ", " from $fields and $values
$fields = preg_replace('/, $/', '', $fields);
$values = preg_replace('/, $/', '', $values);

$sql = "INSERT INTO b_barang ($fields) VALUES ($values)";
$arr[] = $sql;

}

Вы можете также захотеть проверить этот цикл, поскольку он, кажется, применяет INSERTS к Серверу, а не к Локальной базе данных.

foreach($arr as $a){
// Should this line
//$server->query($a);
// be
$local->query($a);
echo $a."<br><br>";
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector