2016-06-16 3 views
0

가져 오기 파일에 데이터베이스에 값이 삽입되어 있는지 확인해야합니다. 데이터베이스에 이미 값이 있으면 업데이트해야합니다. 다음은 dulipcate 항목을 가져 오는 동안 Excel 파일 가져 오기 - PHP mysql

내가 위의 업로드하면, 다음 파일을 엑셀 아래
prdid | prdname 
00A | prd1 
00B | prd2 
00C | prd3 
00D | prd4 

는 EXCEL 파일 데이터 그래서

prdid | prdname 
00A | prdnew 
00B | prd2new 
00E | prd8 
00H | prd9 

입니다 데이터베이스에 producttab 테이블 값

00A , 00B는 UPDATE IN 제품을 가져와야합니다. ttab 테이블은 이미 거기에 있습니다 ...하지만 00E, 00H는 삽입해야합니다

* 아래에 제가 시도한 값입니다. 제대로 삽입되고 있습니다. 업데이트가 부인되지 않습니다. 완벽한 만 UPDATE는 않을 것입니다 인쇄/UPDATE 쿼리의 에코, 파일을 엑셀에 따라 prdname에 대한

update producttab set prdname='prdnew' WHERE prdid='00A' 
update producttab set prdname='prd2new' WHERE prdid='00B' 

값이 제대로 표시됩니다입니다 .... 단지 아래

if(isset($_POST["Upload"])) 
{ 
    $fileinfo = pathinfo($_FILES["uploadFile"]["name"]); 

    $filetype = $_FILES["uploadFile"]["type"]; 
    $remark = NULL; 

    //Validate File Type 
    if(strtolower(trim($fileinfo["extension"])) != "csv") 
    { 
     $_SESSION['msg_r'] = "Please select CSV file"; 
     header("location:importfile.php"); 
     exit; 
    } 
    else 
    { 
     $file_path = $_FILES["uploadFile"]["tmp_name"]; 
    } 

$row = 0; 

$tempFileName = time().".csv"; 

if (is_uploaded_file($file_path)) { 
    $fileCopied = copy($file_path , $tempFileName); 


if (($handle = fopen($tempFileName, "r")) !== FALSE) { 
    fgetcsv($handle); 
    while (($data = fgetcsv($handle, 6000, ",")) !== FALSE) { 
     $num = count($data); 
     for ($c=0; $c < $num; $c++) { 
      $col[$c] = $data[$c]; 
     } 

$col1 = $col[0]; // prdid 
$col2 = $col[1]; // prdname 

$sql = "SELECT prdid FROM producttab WHERE prdid = '".$col1."' "; 
$query = db_query($sql); 
$pfetech = db_fetch($query); 

// ABOVE select QUERY IS PERFECT , it taking me to if conditions 

if($col1 == $pfetech['prdid']){ 

    // only below update not happening 

    $sqlup = "UPDATE producttab 
       SET prdid = ".$pfetech['prdid'].", 
        prdname = ".$col2." "; 
    $sqlup .= " WHERE prdid = ".$pfetech['prdid']." ";  
    $resultsqlupdate = mysql_query($sqlup); 

}else{  

$query = "INSERT INTO producttab(prdid,prdname) VALUES('".$col1."','".$col2.")"; 
$s = mysql_query($query); 

} 


} 
    fclose($handle); 
} 
    echo "<center>File data imported to database!!</center>";        
} 
} 

} 

업데이트 * 적절한 ~이다. 일이 없습니다 ....

+0

사람이 ... 문제 .... – user3209031

+0

유 쿼리가 다음 U 업데이트하거나에 삽입 할 수있는 존재 사용할 수 있습니다 뭔지 주시기 바랍니다 도움 링크입니다 결정의 근거. – Asad

+0

유언장에서 죄송합니다. ...하지만 $ col1 값이 어떻게 될지 ... 00A00B ... 같이하면 ... 도와 주실 수 있습니까? – user3209031

답변

2
사용할 수

는 존재 여부를 데이터베이스, 다음은 쿼리

select exists(select 1 from producttab where prdid='".$col1."'); 

이다가 종료하는 경우는 유 1을 줄 것이다 0하십니까 경우인지 여부를 확인하는 쿼리를 존재 은 if 다른 조건 삽입 또는 그 갱신

만 유 prdname이 PRDID하지 업데이트해야 아 미안이

"UPDATE producttab 
      SET prdname = ".$col2." 
    $sqlup .= " WHERE prdid = ".$pfetech['prdid']." "; 

같은 다른없는 한 가지를 설정합니다. 편집 내 대답

ps. u는 여기 에 대한 CSV 쿼리에서 mysql을 가져 오기를 사용해야합니다 여기 http://www.mysqltutorial.org/import-csv-file-mysql-table/

+0

안녕하세요 아사드, 답변 주셔서 감사합니다 ...하지만 문제는 선택에 대한 문제가 아닙니다 .. 문제는 업데이트입니다 ... 에코/내 업데이트 쿼리를 인쇄 할 때 ... 결과가 아래와 같이 나타납니다 ... 업데이트 된 제품 테이블 설정 prdid = '00A '어디 prdid ='00A '업데이트 producttab 세트 prdid ='00B '어디에 prdid ='00B '... 무슨 일이 잘못 .. 잘 모르겠다. – user3209031

+0

죄송합니다 @ user3209031 내가 prdid하지 prdid 업데이 트해야합니다, 필자는 그것을 편집 – Asad

+0

내가 해냈어. ..하지만 작동하지 않는 메시지를 받고 있어요 "파일 데이터를 데이터베이스로 가져 왔습니다 !!"하지만 데이터베이스 VALUE NOT NOT UPDATE .. 내 말은 prdname 업데이 트되지 않습니다 .. 그것의 동일한 이전 값을 보여주는 – user3209031