2017-05-11 7 views
0

PHP를 사용하여 서버의 테이블 데이터를 로컬 서버에 복사하려고합니다. PHP를 사용하는 로컬 서버에 서버의 mysql 복사 테이블

, 나는

<?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>"; 
} 
?> 

결과는 b_barang INTO

FIRST RESULT

INSERT 같은 첫 번째 배열 (KODE, 나마, Satuan, HP, PPN에있는 스크립트입니다 Diskon, HJ, Kemasan, Margin, Saldo, TglPesan, Batmin, Batmak, HPAwal, PPNAwal, DiskonAwal, HJAwal, IsiKemasan, HPKemasan, HPKemAwal, HPPAverage, VALUES ('3', 'barang 3', '', '', '', '', '', '', '' 'HPPAverageAwal, Jenis, HPP, HPPAwal, SaldoTemp, SaldoInput, Supplier) '0', '0', '0', '', '', '', '', '', '', '', '' ','0 ','0 ',' ')

그 다음 결과 b_barang INTO 처음 결과로부터 (KODE, 나마 Satuan을

`SECOND RESULT` 

INSERT 값을 추가하는 등 잘못 , HP, PPN, Diskon, HJ, Kemasan, Margin, Saldo, TglPesan, Batmin, Batmak, HPAwal, PPNAwal,,451,515,DiskonAwal, HJAwal, IsiKemasan, HPKemasan, HPKemAwal, HPPAverage, HPPAverageAwal, 검색 유형, HPP, HPPAwal, SaldoTemp, SaldoInput, SupplierKode, 나마, Satuan, HP, PPN, Diskon, HJ, Kemasan, 여백, Saldo, TglPesan, Batmin, Batmak, HPAwal, PPNAwal, DiskonAwal, HJAwal, IsiKemasan, HPKemasan, HPKemAwal, HPPAverage, HPPAverageAwal, 검색 유형, HPP, HPPAwal, SaldoTemp, SaldoInput, 공급) VALUES ('3', 'barang 3', ' , 0 ',' ','0 ','0 ', 과 같이' '0', '0', '1', 'barang1', '', '', '', '0', '0', ' '', '', '', '', '', '', '', '0', '', '0', '0', '0', '0' , '', '', '', '', '0', '0', '')

당신은 결과의 값을 볼 수

결과 1. 2 개 추가 값은 어떻게 그것을 해결 할 수 있습니까?

+0

바보 점 :하지만 당신은 당신이 당신이에이 데이터를 삽입하고 싶었 생각'$의 server'을 기반으로 쿼리를 실행하는 이유는'$ local' – RiggsFolly

+0

는 @RiggsFolly 난 서버에서 데이터를 필요로 삽입 로컬 – enda

+0

예 ... 내 대답을 참조하십시오, 어쩌면 그게 더 잘 설명해 줄 수 있습니다. – RiggsFolly

답변

1

while 루프를 반복 할 때마다 $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; 

} 

당신은 또한 서버에 삽입을 적용 할 나타나는이 루프를 확인 할 수 있으며, 하지 로컬 데이터베이스

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

예, 많은 도움을주었습니다 @RiggsF 올리 – enda