作者hunter0711 (CD7)
看板Database
標題[SQL ] 資料庫匯入除錯
時間Mon Sep 7 00:34:10 2009
這是有關於將讀取的.sql檔,寫入mysql資料庫的程式
但是我是以分號判別一段SQL語法的結尾,但是好像不是很優!
因為也些SQL語法中間部份的value會用到分號!
所以我下面的程式讀到一半都會中斷,請問還有什麼判別的方式嗎?
我是寫在PHP上
之前有人講到exec()這函數!
我電腦系統是windows的
但是PHP5是不是不能用了?
好像透過cmd也可以做到匯入的動作,但是我的PHP沒辦法執行。會的人可以幫我一下嗎?
謝謝
<?php
$host = "localhost";
$database = "$account"; //讀取使用者所輸入的
$user = "root";
$pass = "12345";
$sqlFileToExecute ="./aa.sql"; //要載入的來源檔(我放再同一個資料夾下)
$con = mysql_connect($host,$user,$pass);
$sql = " CREATE DATABASE `$account` " ; //建立使用者的資料庫
mysql_query($sql);
mysql_select_db($database);
if ($con !== false){
// Load and explode the sql file
$f = fopen($sqlFileToExecute,"r+");
$sqlFile = fread($f,filesize($sqlFileToExecute));
$sqlArray = explode(';',$sqlFile);
}
//Process the sql file by statements
foreach ($sqlArray as $stmt) {
if (strlen($stmt)>3){
$result = mysql_query($stmt);
if (!$result){
$sqlErrorCode = mysql_errno();
$sqlErrorText = mysql_error();
$sqlStmt = $stmt;
break;
}
}
}
?>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.198.94.137
※ 編輯: hunter0711 來自: 60.198.94.137 (09/07 00:35)
1F:推 maplenote:mysql語法改用php的mysqli 應該就可以執行多筆的SQL語法 09/07 10:50
2F:推 appleboy46:用 mysqli 容易被執行多重 SQL 語法攻擊 09/07 11:05
3F:→ hunter0711:痾~~要怎麼辦!找好久都沒有找到我要的方法= = 09/07 11:23
4F:推 maplenote:可是他只有這次要執行這些sql語法吧~當然正式網頁不建議 09/07 11:27
5F:→ hunter0711:mysqli要怎麼寫?第一次接觸MYSQL今天你講我才知道有~ 09/07 11:41
6F:→ hunter0711:那換個方向想假如是在mysql裡做單純的資料庫複製勒? 09/07 12:05
8F:→ hunter0711:我再來研究看看好哩 謝啦 09/09 10:26