2015-06-29 2 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]', '$'), но получаю ошибку: Неверный счетчик параметров в вызове функции native 'ltrim' – user2168066

ответ

0

Для всего файла

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

2 является ((номер столбца, который содержит символ $) - 1)

или

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

Второй подход - это тот, который нужно выбрать! Поместите это заявление перед оператором 'INSERT'. Было бы еще лучше (= быстрее, менее навязчиво), если сначала собрать все данные, а затем выполнить одну команду «INSERT» с несколькими '(..)' 'после предложения' VALUE'. Вы можете создать эту команду, используя 'join()'. – cars10m