eian@php Posted August 26, 2010 Share Posted August 26, 2010 Hi to all!! I am still new to php.. I need help in reading my text file and inserting it to mysql database. My text file contains 5 fields and has several rows.. The format of my text file: 1 romeo 8877 2010-07-07 abc1 2 nick 7686 2010-07-07 abc2 3 mark 5456 2010-07-07 abc3 4 karm 3432 2010-07-07 abc4 The first field is an INTEGER, the second third fifth fields are VARCHAR and the fourth field is a DATE. I am having trouble with my php code.. My code is this: <?php mysql_connect("localhost","root",""); mysql_select_db("personss"); $textFileName = $_POST['textFileName']; $myFile = "$textFileName"; $fh = fopen($myFile, 'r'); $theData = fread($fh, filesize($myFile)); fclose($fh); $person = explode("\n", $theData); $count = 0; foreach($person as $i => $line) { $nameParts = explode(" ", $person[$count]); $q = "insert into logged (id, name, num, datess, letters) values ('" . implode("','",$nameParts) . "')"; $rw = mysql_query($q) or die("Problem with the query: $q<br>" . mysql_error()); } ?> This code can insert to the database but it only inserts the first row and it loops the insert according to how many rows there are in the text file..For example in my text file there are are 4 rows, it inserts the first row: 1 romeo 8877 2010-07-07 abc1 4times..If there are 6 rows, 6 times the first row will also be inserted.. What i need Sir's is that i need to be able to insert the rows line by line.. if there are 4 rows, i need to insert them all in the database.. Please help me to fix the code. Quote Link to comment Share on other sites More sharing options...
litebearer Posted August 26, 2010 Share Posted August 26, 2010 try... $myFile = "$textFileName"; $lines = file($myfile); $num_lines = count($lines); $i=0; while($i<$num_lines) { $temp_array = explode(" ", $lines[$i]); $sql = "INSERT INTO logged (id, name, num, datess, letters) VALUES ('$temp_array[0]', '$temp_array[1]', '$temp_array[2]', '$temp_array[3]', '$temp_array[4]'"; $result = mysql_query($sql); $i ++; } Quote Link to comment Share on other sites More sharing options...
litebearer Posted August 26, 2010 Share Posted August 26, 2010 BTW if your db table has an auto-increment ID remove the 'id' portions from my example Quote Link to comment Share on other sites More sharing options...
eian@php Posted August 26, 2010 Author Share Posted August 26, 2010 PROBLEM SOLVED SIR! I go through the code and it now looks like this: <?php mysql_connect("localhost","root",""); mysql_select_db("personss"); $textFileName = $_POST['textFileName']; $myFile = "$textFileName"; $fh = fopen($myFile, 'r'); $theData = fread($fh, filesize($myFile)); fclose($fh); $person = explode("\r\n", $theData); $count = 0; foreach($person as $i => $line) { $nameParts = explode(" ", $line); $q = "insert into logged (btaddress, btname, logtime, date, subjectCode) values ('" . implode("','",$nameParts) . "')"; $rw = mysql_query($q) or die("Problem with the query: $q<br>" . mysql_error()); $nameParts = explode("", $line); $count++; } ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.