2016-03-24 2 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));  
    } 
} 

Je recevais Commands out of sync; you can't run this command now erreurcomment exécuter une requête dans c sans mysql_free_result (res)

+1

Votre guillemet unique n'est pas le bon guillemet simple. Ce doit être '. –

+0

Les citations sont correctes. –

+0

S'il vous plaît poster plus de code, en particulier, afficher le premier 'mysql_query'. –

Répondre

-1

La déclaration correcte est:

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

Notez la citation correcte autour de la %s et notez que la D'autres choses n'ont pas besoin de guillemets car ce sont des noms, pas des valeurs.

+0

j'ai besoin d'exécuter deux requêtes, on est à l'intérieur tout en boucle –

+0

Alors? Exécutez simplement la requête et l'instruction 'sprintf' dans la boucle. Et je ne sais pas ce que vous allez chercher, mais peut-être que vous avez besoin d'adresser un champ dans votre 'row [0]'. Et peut-être que les requêtes interfèrent les unes avec les autres si vous récupérez à partir de la même table que vous supprimez. Quoi qu'il en soit, la déclaration ci-dessus est correcte. Afficher plus de code pour nous faire comprendre l'erreur plus en détail. –

0

Vous utilisez probablement la fonction mysql_use_result() pour obtenir des résultats à partir de la base de données MySQL. Dans ce cas, les lignes sont envoyées au client une par une, lorsque mysql_fetch_row() est appelée. Jusqu'à ce que toutes les lignes sont extraites, base de données poignée est « verrouillée »:

Lorsque vous utilisez mysql_use_result(), vous devez exécuter mysql_fetch_row() jusqu'à ce qu'une valeur NULL est retournée, sinon, les lignes non récupérées sont retournés dans le cadre du jeu de résultats votre prochaine requête L'API C donne l'erreur Commands out of sync; you can't run this command now si vous oubliez de le faire!

Essayez mysql_store_result() en remplacement. Cette fonction récupère toutes les lignes à la fois.

+0

j'ai besoin d'exécuter une autre requête à l'intérieur que rien d'autre –