2011-07-04 25 views
2

我想從一個PHP文件中運行一些MySQL數據庫的多個查詢。但它不起作用。任何人都可以指出我要去哪裏嗎?從PHP |運行多個MySQL查詢爲什麼這不起作用?

這裏是php文件的內容:提前任何幫助

<? 
require_once('/home/xxxxxx/public_html/xxxxxx/dbconnect.php'); 
$query = " 
TRUNCATE TABLE db2.table1; 
INSERT INTO db2.table1 
SELECT 
     column1, column2, column3, column4 
     FROM db1.table1; 

TRUNCATE TABLE db2.table2; 
INSERT INTO db2.table2 
SELECT 
     column1, column2, column3, column4 
     FROM db1.table2; 
ANALYZE TABLE db2.table2; 
"; 

$result = @mysql_query($query);  
?> 

感謝。

回答

3

您只進行一個查詢。爲mysql_query

的mysql_query閱讀文檔()發送一個唯一的查詢 (多個查詢不支持) 當前激活的數據庫上 一個與該 指定link_identifier關聯的服務器。

您應該將每個查詢拆分到它自己的字符串中,然後逐個發送給MySQL。

$query1 = "TRUNCATE TABLE db2.table1;"; 
$query2 = "INSERT INTO db2.table1 
SELECT 
     column1, column2, column3, column4 
     FROM db1.table1;"; 

$query3 = "TRUNCATE TABLE db2.table2;"; 
$query4 = "INSERT INTO db2.table2 
SELECT 
     column1, column2, column3, column4 
     FROM db1.table2;"; 
$query5= "ANALYZE TABLE db2.table2;"; 

$result1 = @mysql_query($query1); 
$result2 = @mysql_query($query2); 
$result3 = @mysql_query($query3); 
$result4 = @mysql_query($query4); 
$result5 = @mysql_query($query5); 

或者使用一些其他支持多個查詢的接口函數。我個人不知道是否有這樣的事情。

+0

非常感謝!這很有用。 – Paul

+1

如果您安裝了mysqli,則可以在一次函數調用中執行多個查詢:http://www.php.net/manual/en/mysqli.multi-query.php – grossvogel

4

在這種情況下做的最重要的事情是調試:

  • 取出@前綴看到錯誤
  • 添加echo mysql_error()如果請求mysql_query()返回false看到MySQL的錯誤信息

在您的特定情況下,mysql_query()無法執行多個語句。最簡單的解決方案是使用兩個單獨的命令。

+0

+1,用於提示刪除'@'。 –

相關問題