csv ファイルを mysql-databse にインポートしようとしていますが、アップロードスクリプトで重複をチェックし、見つかった場合はその行を更新する必要がありますが、選択した値のみを更新する必要があります。「初見」以外のすべての値を更新したい。bssid は私の一意の識別子です。「addslashes」をより良いコードに変更する必要があるという提案もありましたが、どの方法が最適かわかりません。何か提案はありますか?
<?php
//Count ap´s before import
$before = mysql_query("SELECT * FROM wifi");
$num_rows_before = mysql_num_rows($before);
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
$linesCount ++;
mysql_query("INSERT INTO wifi (bssid, channel, privacy, ciper, auth, power, essid, latitude, longitude, first_seen, last_seen) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."',
'".addslashes($data[6])."',
'".addslashes($data[7])."',
'".addslashes($data[8])."',
'".addslashes($data[9])."',
'".addslashes($data[10])."'
)
");
}
} while ($data = fgetcsv($handle,1000,","));
//redirect
header('Location: index.php/ladda-upp?success=1&before=' . $num_rows_before); die;
}
//Catch argument from url
$arg_bef=$_GET['before'];
//Count ap´s after import
$after = mysql_query("SELECT * FROM wifi");
$num_rows_after = mysql_num_rows($after);
//Count new rows
$new_rows = $num_rows_after - $arg_bef;
//generic success notice
if (!empty($_GET[success])) { echo "<br><b>Resultat: Din fil har blivit importerad!</b><br><br>";
//echo stats
echo "Antal före import - ";
echo "$arg_bef";
echo "<br>";
echo "Antal efter import - ";
echo "$num_rows_after";
echo "<br>";
echo "Antal nya rader - ";
echo "$new_rows";
echo "<br>";
echo "Rader i CSV-fil - ";
}
//Close connection to databse
mysql_close($connect) ;
?>