2016-06-16 3 views
0

インポートファイルの中に値が挿入されているかどうかをチェックする必要があります。以下はdulipcateの更新時にExcelファイルをインポートする - PHP mysql

私はエクセル上にアップロードする場合は、データベースの下

prdid | prdname 
00A | prd1 
00B | prd2 
00C | prd3 
00D | prd4 

でproducttabテーブル値は、Excelファイルのデータは、その後、

00Aを提出だから、

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

です、00BはUPDATE INプロダクトを取得する必要がありますttabテーブルはすでに存在しているので... 00E、00Hは挿入する必要があります

*以下は私が試したものです。値は適切に挿入されています 更新が行われていません。完璧な、唯一のUPDATEを行っていない印刷/ UPDATEクエリのエコー、Excelファイルごとに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

方を対象として、ここで、この 用のCSVクエリからのmysqlのインポートを使用する必要があります.... – user3209031

+0

は、クエリが存在する、その後uが更新または上に挿入することができます決定の根拠。 – Asad

+0

あなたが言っていることを意味するのですか? ...でも$ col1の値は... 00A00Bのようになります...一緒に...私は助けてください – user3209031

答えて

2

がデータベースに存在するかしないかどうかを確認するためのクエリが存在する、次はそれをさらにやる、それが終了した場合のu 1を与え、ない場合は0になるクエリ

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

です挿入またはupdationであれば、他の条件に

とだけはごめんああuはPRDIDないprdnameを更新する必要があり、この

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

のような他のない一つのことを設定します。 編集した私の答え

ps。 uは使用することができます uはリンクが問題になるものを私に聞かせてください...ここに助け http://www.mysqltutorial.org/import-csv-file-mysql-table/

+0

こんにちはアサド、答えてくれてありがとう...しかし、問題は選択についてではありません..問題はUPDATEです...私はエコー/私の更新クエリを印刷する...それは以下のようになります...アップデートproducttabセットprdid = '00A 'WHERE prdid =' 00A 'update producttab set prdid =' 00B 'WHERE prdid =' 00B '...何がうまくいかないのかわからない.. – user3209031

+0

sorry @ user3209031私はprdidを更新する必要がありません、Iveは – Asad

+0

を編集しました。 ..しかし、私はメッセージ "データベースにインポートされたファイルデータを取得している作業していない!"データベースでVALUE IS NOT UPDATE ..私はprdnameが更新されていないことを意味します。同じ古い値を表示しています – user3209031

関連する問題