Esempio n. 1
0
function parse_sql_file($filename)
{
    // do not escape the file while reading it
    set_magic_quotes_runtime(0);
    $fcz = new FC_SQL();
    $fcz->connect();
    if (file_exists($filename)) {
        $fp = fopen($filename, "r");
        while ($buffer = fgets($fp, 4096)) {
            $dres = null;
            $res = null;
            if (strchr($buffer, '#') && eregi("\"#[0-9a-z]{6}\"", $buffer)) {
                // html color code, typically in inserted html
                $sql .= $buffer;
            } else {
                if (ereg("(^[ \t]*[#;/-]+)", $buffer, $res) || ereg("^\n", $buffer)) {
                    // comment line, skip it
                    // oracle has lines with a single leading /, skip them
                    continue;
                } elseif (ereg("([^#]+);[\t ]*[-]{0,2}.*", $buffer, $res)) {
                    // ; terminated sql line
                    // chop off double dash comments
                    $sql .= $res[1];
                    // echo "second: $sql<br>br>\n";
                    if (ereg(" end[ \t]*\$", $res[1])) {
                        // wierd hack for oracle triggers/procedures
                        $sql .= ';';
                    }
                    $fcz->query($sql);
                    unset($sql);
                } elseif (ereg("(^[^#;]+)[\t ]*[-]{0,2}[^;]*", $buffer, $res)) {
                    // unterminated sql line
                    // chop off double dash comments
                    $sql .= $res[1];
                    // echo "first: $sql<br><br>\n";
                } else {
                    // echo "third: $buffer<br><br>\n";
                }
            }
        }
        fclose($fp);
    }
}