2015-06-29 75 views
0

我有一個php頁面,它接收一個csv文件並將其上傳到我的數據庫。我遇到的問題是某些字段有'$',我不需要。有沒有辦法只從部分字段中刪除$?

數據結構

COLL_ID COCC_ID AGEDTOTAL PAYMENTTOTAL  
5074  11110  $7.50  ($7.50) 

我查詢

$deleterecords = "TRUNCATE TABLE mytable"; //empty the table of its  current records 
mysql_query($deleterecords); 

//Upload File 
if (isset($_POST['submit'])) { 
    $i=0; 
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) { 
    echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>"; 
    echo "<h2>Displaying contents:</h2>"; 
    readfile($_FILES['filename']['tmp_name']); 
} 

//Import uploaded file to Database 
$handle = fopen($_FILES['filename']['tmp_name'], "r"); 

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    if ($i>0){ 
    $import="INSERT into mytable(COLL_ID, COCC_ID, AGEDTOTAL, PAYMENTTOTAL) values('$data[0]','$data[1]','$data[2]','$data[3]')"; 

    mysql_query($import) or die(mysql_error()); 
} 
$i++; 
} 
+0

嘗試使用'strpos()'結合'str_replace()'也許?在插入數據庫之前,您可能需要將'$ data'數組的內容讀取到各個變量中。 – Maximus2012

+2

除了使用MySQLi或PDO和預處理語句/綁定變量而不是舊的,不推薦使用的MySQL接口的勸告之外......你不能簡單地使用'str_replace(['$','','',$ field )'或'ltrim($ field,'$')'在數組的那些元素上? –

+0

我使用這個,而不是ltrim('$ data [2]','$'),但得到的錯誤:調用本地函數'ltrim'中的錯誤參數計數 – user2168066

回答

0

整個文件

$string = preg_replace(
    '/((:?.*?\,){2}.*?)\$/', 
    '$1', 
    $string 
); 

2是((列數包含$符號) - 1)

$data[2] = str_replace('$', '', $data[2]); 
+0

第二種方法是選擇一個!在INSERT語句之前放置這條語句。如果先收集所有數據,然後在'VALUE'子句後面執行一個帶有多個'(..)'的'INSERT'命令,則會更好(=更快,更不突兀)。你可以使用'join()'來構造這個命令。 – cars10m