2011-01-19 9 views
2

せずに別のループ内mysqlのクエリを実行している:私は2番目mysql_query(で実行するたびには、同期エラー

MYSQL_RES *res; 
MYSQL_ROW row; 
mysql_query(mysql, "some select query"); 
res = mysql_use_result(mysql); 
while (row = mysql_fetch_row(res)) { 
    MYSQL_RES *res2; 
    MYSQL_ROW row2; 
    mysql_query(mysql, "some other select query using an id from the first"); 
    res2 = mysql_use_result(mysql); 
    /* ... */ 
    mysql_free_result(res2); 
} 
mysql_free_result(res); 

ループを実行すると、エラーが発生します。

mysql: 2014: Commands out of sync; you can't run this command now 

選択クエリから別の選択クエリを実行するにはどうしたらいいですか?

答えて

2

私はMySQLのメーリングリストに電子メールを送りました。基本的に、これを行うには、2つの独立したMySQL接続が必要です。ありがとう、ショーン・グリーン(Oracleから)

接続に使用するmysqlオブジェクトは、一度に1つのアクティブなクエリまたは結果のみを持つことができます。 2つの結果セットを動作させるには、MySQLサーバへの2番目の独立した接続が必要です。

+0

コード全体を書き換えることはできますか?それが必要。 –

-1

本当の質問は、なぜ2つのループが必要なのですか?

外側のステートメントから行ごとに1つのステートメントを実行する代わりに、必要なものすべてを返す単一のステートメントを作成する方が、ほとんどの場合効率が向上します。