超級好用的讀取sql檔案的程式方法 從joolma 擷取出來的函數splitSql
可以將指定地點內的.sql檔案完整讀出與寫入資料庫 帥ㄚ老皮
function createdb($new_name){
dbiu('create database '.$new_name);
dbiu('use '.$new_name);
$buffer=file_get_contents('sql/eip.sql');
if ( $buffer === false ) {
return false;
}else{
$queries=$this->splitSql($buffer);
foreach ($queries as $query)
{
$query = trim($query);
if ($query != '' && $query {0} != '#')
{
dbiu($query);
}else{
echo "no query";
}//end if
}//end foreach
return true;
}
}//endif
function splitSql($sql)
{
$sql = trim($sql);
$sql = preg_replace("/\n\#[^\n]*/", '', "\n".$sql);
$buffer = array ();
$ret = array ();
$in_string = false;
for ($i = 0; $i < strlen($sql) - 1; $i ++)
{
if ($sql[$i] == ";" && !$in_string)
{
$ret[] = substr($sql, 0, $i);
$sql = substr($sql, $i +1);
$i = 0;
}//end if
if ($in_string && ($sql[$i] == $in_string) && $buffer[1] != "\\")
{
$in_string = false;
}
elseif (!$in_string && ($sql[$i] == '"' || $sql[$i] == "'") && (!isset ($buffer[0]) || $buffer[0] != "\\"))
{
$in_string = $sql[$i];
}
if (isset ($buffer[1]))
{
$buffer[0] = $buffer[1];
}
$buffer[1] = $sql[$i];
}//end for
if (!empty ($sql))
{
$ret[] = $sql;
}
return ($ret);
}//end function