我有一個apphp_db_install($sql_dump_file)從 db_dump.sql 文件安裝 sql 數(shù)據(jù)庫的函數(shù),我收到一個錯誤:SQLSTATE [42000]:語法錯誤或訪問沖突:1065 查詢?yōu)榭瘴乙呀泧L試在干凈的數(shù)據(jù)庫中使用此功能。我安裝 SQL 的功能:function apphp_db_install($sql_dump_file) { global $error_mg; global $username; global $password; global $database_prefix; global $password_encryption; global $db; $sql_array = array(); $query = "";// get sql dump content $sql_dump = file($sql_dump_file);// replace database prefix if exists $sql_dump = str_ireplace('<DB_PREFIX>', $database_prefix, $sql_dump);// disabling magic quotes at runtime if(get_magic_quotes_runtime()){ function stripslashes_runtime(&$value){ $value = stripslashes($value); } array_walk_recursive($sql_dump, 'stripslashes_runtime'); }// add ";" at the end of file if(substr($sql_dump[count($sql_dump)-1], -1) != ";") { $sql_dump[count($sql_dump)-1] .= ";"; } // replace username and password if exists if(EI_USE_USERNAME_AND_PASWORD){ $sql_dump = str_ireplace("<USER_NAME>", $username, $sql_dump); if(EI_USE_PASSWORD_ENCRYPTION){ if($password_encryption == "AES"){ $sql_dump = str_ireplace("<PASSWORD>", "AES_ENCRYPT('".$password."', '".EI_PASSWORD_ENCRYPTION_KEY."')", $sql_dump); }else if($password_encryption == "MD5"){ $sql_dump = str_ireplace("<PASSWORD>", "MD5('".$password."')", $sql_dump); }else{ $sql_dump = str_ireplace("<PASSWORD>", "AES_ENCRYPT('".$password."', '".EI_PASSWORD_ENCRYPTION_KEY."')", $sql_dump); } }else{ $sql_dump = str_ireplace("<PASSWORD>", "'".$password."'", $sql_dump); } }else{ $sql_dump = str_ireplace("<USER_NAME>", "", $sql_dump); $sql_dump = str_ireplace("<PASSWORD>", "''", $sql_dump); } $sql_dump = str_ireplace("<ENCRYPTION_TYPE>", $password_encryption, $sql_dump);
1 回答

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
您嘗試執(zhí)行的 SQL 轉儲中似乎有空行(因此該行的查詢確實為空)
首先修復,測試$sql_line != ""
是無用的,因為file()
函數(shù)在每行的末尾返回行尾字符。您可以更換每個測試trim($sql_line) != ""
如果還不夠,您可以添加一個測試(trim($sql_line) != ';')
以刪除僅包含;
- 1 回答
- 0 關注
- 186 瀏覽
添加回答
舉報
0/150
提交
取消