超級好用的讀取sql檔案的程式方法

超級好用的讀取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

發佈留言