I have made this a small script called SQL2PHP,
---
<html>
<head><title>SQL2PHP</title></head>
<body>
<pre>
<?
/*
SQL2PHP v0.1 by [EMAIL PROTECTED]
You may use this script as long as you credit the original author
*/
function parse_sql_stream($all)
{
$len = strlen($all);
$lines = array();
$inquotes = false;
$lastquote = '';
$lastch = "\xa";
$start = 0;
$incomment1 = false;
$incomment2 = false;
$brokestr = "";
for ($i=0;$i<$len;$i++)
{
$ch = $all[$i];
// single line comment - ON
if ( $ch == '#' && !$inquotes)
{
$incomment1 = true;
continue;
}
// single line comment - OFF
if ($incomment1 && ($ch == "\r" || $ch == "\n"))
{
$incomment1 = false;
$start = $i;
continue;
}
// multiline comment - ON
if (!$inquotes && $lastch == '/' && $ch == '*')
{
$incomment2 = true;
$brokestr = substr($all, $start, $i - $start - 1);
continue;
}
// multiline comment - OFF
if ($incomment2 && $ch == '/' && $lastch=='*')
{
$incomment2 = false;
$start = $i+1;
continue;
}
// inquote desicions
if (($ch == '\'' || $ch=='"'))
{
if (!$inquotes)
{
$lastquote = $ch;
$inquotes = true;
}
else
$inquotes = ( ($lastch == "\\" && $ch == $lastquote) || ($ch !=
$lastquote) );
}
// new statment decision
if ($ch == ';' && !$inquotes && !$incomment1 && !$incomment2)
{
$lines[] = trim($brokestr . trim(substr($all, $start, $i -
$start)));
$brokestr = "";
$i++; // skip the ';'
$start = $i;
}
// update last read character
$lastch = $ch;
} // for i
return $lines;
}
function parse_sql_file($filename)
{
$fp = fopen($filename, 'rb');
$all = fread($fp, filesize($filename));
fclose($fp);
return parse_sql_stream($all);
}
set_time_limit(0);
mysql_connect('localhost', 'test', 'test');
$test = parse_sql_file('file3.sql');
for ($i=0; $i<count($test);$i++)
{
$result = mysql_query($test[$i]);
if (!$result)
{
echo "Failed at line $i with query:\n{$test[$i]}\nMySql error:" .
mysql_error() . "\n";
break;
}
}
echo "done!\n";
?>
</pre>
</body>
</html>
---
file3.sql can contain:
---
DROP DATABASE t;
CREATE DATABASE t;
USE t;
#
# Table structure for table 'brands'
#
DROP TABLE /*!32200 IF EXISTS*/ brands;
CREATE TABLE /*!32300 IF NOT EXISTS*/ brands (
id int(10) unsigned NOT NULL auto_increment,
language tinyint(2) DEFAULT '1' ,
company varchar(50) ,
countryid int(10) unsigned ,
name varchar(50) NOT NULL DEFAULT '' ,
logo varchar(200) NOT NULL DEFAULT '' ,
description mediumtext NOT NULL DEFAULT '' ,
PRIMARY KEY (id)
);
#
# Dumping data for table 'brands'
#
INSERT INTO brands VALUES("122","1",NULL,"12","Hummer","","");
INSERT INTO brands VALUES("2","1",NULL,"12","Buick","","");
INSERT INTO brands VALUES("3","1",NULL,"12","GMC","","");
INSERT INTO brands VALUES("4","1",NULL,"12","Jeep","","");
INSERT INTO brands VALUES("5","1",NULL,"12","Ford Motor Company","","");
INSERT INTO brands VALUES("6","1",NULL,"12","Opel","","");
INSERT INTO brands VALUES("7","1",NULL,"12","Audi","","");
INSERT INTO brands VALUES("8","1",NULL,"12","BMW","","");
INSERT INTO brands VALUES("9","1",NULL,"12","Porche","","");
INSERT INTO brands VALUES("10","1",NULL,"12","Mercedes","","");
INSERT INTO brands VALUES("11","1",NULL,"12"," Infinity*","","");
INSERT INTO brands VALUES("12","1",NULL,"12","Isuzu","","");
INSERT INTO brands VALUES("13","1",NULL,"12","Subaru","","");
INSERT INTO brands VALUES("14","1",NULL,"12","Suzuki","","");
INSERT INTO brands VALUES("15","1",NULL,"12","Mazda","","");
INSERT INTO brands VALUES("16","1",NULL,"12","Mitsubishi Motors","","");
INSERT INTO brands VALUES("17","1",NULL,"12","Honda","","");
INSERT INTO brands VALUES("18","1",NULL,"12","Alfa Romeo","","");
# as much as you want!!!
#
---
Hope someone make use of it!
I tried it with a SQL file with 32554 lines long!
//elias
"Lallous" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> Actually the mysql_query() seems to accept only one statement at a time.
>
> Any work around so i can do query suchs:
>
> mysql_query("
> SELECT 1+1;
> SHOW DATABASES;
> USE database1;
> SELECT * FROM table1;
> ");
>
> Just multiple commands seperated with ';' ? (as if using the Mysql command
> prompt)
>
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]