2016-03-24 3 views
0
while ((row = mysql_fetch_row(res)) != NULL) { 

    sprintf(statement, "DELETE FROM `outgoing` WHERE `outgoing`.`id`=%s", row[0]); 

    if (mysql_query(conn, statement)) { 
     fprintf(stderr, "%s\n", mysql_error(conn));  
    } 
} 

私は取得していますCommands out of sync; you can't run this command nowエラー(RES)

+1

あなたの一重引用符は正しい一重引用符ではありません。それは違いない '。 –

+0

引用符は正しいです。 –

+0

もっとコードを投稿してください。特に、最初の 'mysql_query'を表示してください。 –

答えて

-1

正しい文は次のとおりです。

sprintf(statement, "DELETE FROM outgoing WHERE outgoing.id='%s'", row[0]); 

%s周りの正しい引用とことに注意してください他のものは名前であり値ではないので引用符は必要ありません。

+0

2つのクエリを実行する必要があります.1つはループwhile whileループです –

+0

だから?ループ内でクエリと 'sprintf'文を実行するだけです。そして、私はあなたが何を取得しているのかは分かりませんが、 'row [0]'のフィールドにアドレスする必要があるかもしれません。そして、削除している同じテーブルからフェッチすると、クエリが互いに干渉することがあります。とにかく、上記のステートメントは正しいです。エラーをより詳細に理解するためのコードをさらに表示してください。 –

0

おそらくmysql_use_result()関数を使用して、MySQLデータベースから結果を取得します。この場合、mysql_fetch_row()が呼び出されると、行がクライアントに1つずつ送信されます。すべての行がフェッチされるまでは、データベース・ハンドルは「ロック」されています

mysql_use_result()を使用して、あなたはNULL値が返されるまで、それ以外の場合は、取り出されなかった行は は、結果セットの一部として返されmysql_fetch_row() を実行する必要がありますあなたの次の質問。これを忘れると、C API はエラーCommands out of sync; you can't run this command now を返します。

代わりにmysql_store_result()を試してください。この関数はすべての行を一度に取り出します。

+0

私はそれの中で別のクエリを実行する必要があります –

関連する問題