本文提供一個功能完整的 PHP 腳本,支援 MySQL 資料庫的單行與批量 SQL 匯入。腳本包含連線設定、SQL 執行、建表處理、錯誤回報等功能,並內建簡易的 Web 介面供操作使用。
CREATE TABLE 語句並先刪除同名資料表magic_quotes_gpc 自動處理跳脫字元error_reporting(7);
// 處理 register_globals 與 magic_quotes_gpc
if (function_exists('ini_get')) {
$onoff = ini_get('register_globals');
} else {
$onoff = get_cfg_var('register_globals');
}
if ($onoff != 1) {
@extract($_POST, EXTR_SKIP);
@extract($_GET, EXTR_SKIP);
}
// 遞迴移除跳脫字元
function stripslashes_array(&$array) { ... }
if (get_magic_quotes_gpc()) {
$_POST = stripslashes_array($_POST);
}
if ($_GET['action'] == "sql") {
$servername = isset($servername) ? $servername : 'localhost';
$dbusername = isset($dbusername) ? $dbusername : 'root';
$dbpassword = isset($dbpassword) ? $dbpassword : '';
$dbname = isset($dbname) ? $dbname : '';
}
if ($doquery) {
if (@mysql_connect($servername, $dbusername, $dbpassword)
AND @mysql_select_db($dbname)) {
echo "資料庫連接執行!\n";
} else {
echo "出錯: " . mysql_error();
}
$a_query = explode(";", $_POST['sql_query']);
while (list(,$query) = each($a_query)) {
$query = trim($query);
if ($query) {
if (strstr($query, 'CREATE TABLE')) {
// 自動處理建表:先 DROP 再 CREATE
ereg('CREATE TABLE ([^ ]*)', $query, $regs);
mysql_query("DROP TABLE IF EXISTS $regs[1]");
echo "<p>正在建立表: $regs[1] …… ";
$result = @mysql_query($query);
echo $result ? "成功!</p>\n" : "失敗!</p>\n";
} else {
$result = @mysql_query($query);
echo $result ? "SQL語句成功執行\n" : "出錯: " . mysql_error();
}
}
}
mysql_close();
}
腳本內嵌 HTML 表單,提供主機、帳號、密碼、資料庫名稱輸入欄位,以及 SQL 文字區域與執行按鈕,採用簡潔 CSS 樣式。
mysql_* 函數,現代專案建議改用 PDO 或 MySQLi。max_allowed_packet 設定。這個腳本雖然年代久遠,但展示了早期 PHP 操作 MySQL 的典型模式,適合學習參考或維護舊系統時使用。