所以我在 用戶名的格式的平面文件分貝:$ SHA $ 1010101010101010 $ 010110010101010010101010100101010101001010:255.255.255.255:1342078265214高效的php代碼插入數組數據到mysql表?
在新行中的每個記錄......約5000+線..我想將它導入一個MySQL表。通常我會使用phpmyadmin和「文件導入」來做到這一點,但現在我想通過使用php通過ftp下載數據庫來自動執行此過程,然後清理現有的表數據並上載更新的數據庫。
id(AUTH INCREMENT) | username | password | ip | lastlogin
我下面有大部分該腳本..雖然PHP將產生一個錯誤: 「PHP致命錯誤:最長30秒的執行時間超過了」我相信我可以增加此時間,但在遠程服務器上,我懷疑我會被允許,所以我需要找到更好的方式來做到這一點。
只有約1000條記錄將被插入到該超時之前數據庫...
我正在使用的代碼如下..我會說,現在我不是在PHP親,這是主要收集起來並拼湊在一起。我正在尋找一些幫助,使之更有效率,因爲我聽說像這樣做插入是不好的。它真的聽起來不錯,因爲當我在本地PC上運行這個腳本時,大量的磁盤劃傷了。我的意思是爲什麼它想要殺死硬盤來做這樣一個看似簡單的任務。
<?php
require ('Connections/local.php');
$wx = array_map('trim',file("auths.db"));
$username = array();
$password = array();
$ip = array();
$lastlogin = array();
foreach($wx as $i => $line) {
$tmp = array_filter(explode(':',$line));
$username[$i] = $tmp[0];
$password[$i] = $tmp[1];
$ip[$i] = $tmp[2];
$lastlogin[$i] = $tmp[3];
mysql_query("INSERT INTO authdb (username,password,ip,lastlogin) VALUES('$username[$i]', '$password[$i]', '$ip[$i]', '$lastlogin[$i]') ") or die(mysql_error());
}
?>
在一個查詢中插入多行應顯着提高性能。 –
什麼是'aswel'? – alfasin
由於您在沒有[正確的SQL轉義](http://bobby-tables.com/php)的情況下使用'mysql_query',您應該爲了自己的安全而使用'mysqli'或PDO。 – tadman