2011-07-04 10 views
2

PHPファイルからいくつかのmysql dbsに対して複数のクエリを実行しようとしています。しかし、それは動作していません。私が間違っているところを誰かが指摘できますか?任意の助けを事前にPHPから複数のMySQLクエリを実行する|なぜこれは機能しないのですか?

<? 
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);  
?> 

ありがとう:ここ

は、PHPファイルの内容です。

答えて

3

クエリは1つだけ作成しています。 mysql_query

するmysql_queryのためのドキュメントを読む()は、指定された link_identifierと関連付けられています サーバ上の現在アクティブなデータベースに独自のクエリ (複数のクエリがサポートされていない) を送信します。

各クエリを独自の文字列に分割し、1つずつ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がインストールされている場合、1つの関数呼び出しで複数のクエリを実行することができます。http://www.php.net/manual/en/mysqli.multi-query.php – grossvogel

4

このような場合に行うには、最も重要なことは、デバッグです:

  • がするmysql_query()はMySQLのエラーメッセージ参照してくださいfalseを返した場合、エラーが
  • echo mysql_error()の追加を参照してくださいする@プレフィックスを削除

具体的にはmysql_query()は複数のステートメントを実行できません。最も簡単な解決法は、2つの別々のコマンドを使用することです。

+0

+1は '@'を削除することを提案しています。 –

関連する問題