2015-06-29 143 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