You are here: Re: [PHP] Creating INSERT INTO statement from dbf file « PHP « IT news, forums, messages
Re: [PHP] Creating INSERT INTO statement from dbf file

Posted by Tom Rogers on 04/12/05 01:39

Hi,

Tuesday, April 5, 2005, 6:33:31 AM, you wrote:

RSJ> Ave,

RSJ> I¹ve written a code that is able to extract the Column names and Records
RSJ> from a simple dbf (foxpro) file and create an INSERT INTO sql statement
RSJ> which can be used to insert all those records with their corresponding field
RSJ> names in an existing mySQL table. (A CREATE TABLE code I wrote is able to
RSJ> create the table from the dbf file information).

RSJ> Following is the code I wrote for creating the INSERT INTO sql:

RSJ> <?php
RSJ> $db_path = "$DATABASEFILE";
RSJ> $dbh = dbase_open($db_path, 0) or die("Error! Could not open
RSJ> dbase database file '$db_path'.");
RSJ> if ($dbh) {

RSJ> #Get the Information
RSJ> $column_info = dbase_get_header_info($dbh);
RSJ> $record_numbers = dbase_numrecords($dbh);

RSJ> #Run the loop for all the records in the Table
RSJ> for ($i = 1; $i <= $record_numbers; $i++) {
RSJ> $row = dbase_get_record_with_names($dbh, $i);

RSJ> echo "INSERT INTO
RSJ> ".substr($DATABASEFILE_name,0,-4)." (";

RSJ> #Run the loop for all the fields in the Table
RSJ> foreach ($column_info as $v1) { echo "$v1[name],"; }

RSJ> echo ") VALUES (";

RSJ> #Run the loop for all the values corresponding to fields in the
RSJ> Table
RSJ> foreach ($column_info as $v1) { echo
RSJ> "'".trim($row[$v1[name]])."',"; }

RSJ> echo "'); <br>";

RSJ> }
RSJ> }
RSJ> dbase_close($dbh);
?>>

RSJ> It works fine, except for one problem. It¹s able to create the INSERT INTO
RSJ> sql statement, with all the fields and corresponding values, but as I¹m
RSJ> running a loop for both the fields names, and the values corresponding to
RSJ> fields names, it leaves a comma after the records are over.

RSJ> So instead of having this : INSERT INTO tblname (c1,c2,c3) VALUES
RSJ> (Œv1¹,¹v2¹,¹v3¹);
RSJ> I achieve this : INSERT INTO tblname (c1,c2,c3,) VALUES (Œv1¹,¹v2¹,¹v3¹,¹);

RSJ> Notice an additional Comma after column names, and an additional ,¹ after
RSJ> the values. I¹m not quite sure what to do to get rid of those. I¹ve tried
RSJ> some different combinations using different kind of logic with the echo
RSJ> statements, but it¹s not working out. Would love some help.

RSJ> Thanks,

RSJ> Rahul S. Johari
RSJ> Coordinator, Internet & Administration
RSJ> Informed Marketing Services Inc.
RSJ> 251 River Street
RSJ> Troy, NY 12180

RSJ> Tel: (518) 266-0909 x154
RSJ> Fax: (518) 266-0909
RSJ> Email: rahul@informed-sources.com
RSJ> http://www.informed-sources.com

I would do it this way:

<?php
$db_path = "$DATABASEFILE";
$dbh = dbase_open($db_path, 0)
or die("Error! Could not open dbase database file '$db_path'.");
if ($dbh) {
#Get the Information
$column_info = dbase_get_header_info($dbh);
$record_numbers = dbase_numrecords($dbh);
$table = substr($DATABASEFILE_name,0,-4);
$fields = ''; //we will fill this on the first pass
$first = true; //flag to generate field names
#Run the loop for all the records in the Table
for ($i = 1; $i <= $record_numbers; $i++) {
$values = ''; //start off null values
$row = dbase_get_record_with_names($dbh, $i);
#Run the loop for all the fields in the Table
foreach ($column_info as $v1) {
$field = $v1['name'];
if($first) $fields .= (empty($fields))? $field : ",$field";
$val = mysql_escape_string(trim($row[$field]));
$values .= (empty($values))? "'$val'" : ",'$val'";
}
$first = false; // we have a field list now
echo "INSERT INTO $table ($fields) VALUES ($values) <br>";
}
dbase_close($dbh);
}
?>

--
regards,
Tom

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация