(res)

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

alıyorum Commands out of sync; you can't run this command now hata(res)

+1

Tek teklifiniz, doğru tek alıntı değil. Olmalı '. –

+0

Alıntılar doğru. –

+0

Lütfen daha fazla kod yazınız, özellikle ilk "mysql_query" yazınız. –

cevap

-1

doğru bir ifadedir:

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

Not %s etrafında doğru alıntı ve dikkat Diğer şeyler ise, değerler değil, isimler olduğu için NO tırnaklara ihtiyaç duyarlar.

+0

İki sorgu çalıştırmam gerekiyor, bir tanesi içeride iken –

+0

Yani? Sadece sorgudaki "sprintf" ifadesini çalıştırın. Ve ne aldığınızı bilmiyorum ama belki de [0] 'satırında bir alanı ele almanız gerekiyor. Ve belki de sildiğiniz aynı tablodan getiriyorsanız sorguları birbiriyle etkileşime girer. Her neyse, yukarıdaki ifade doğrudur. Hatayı daha ayrıntılı olarak anlayabilmek için daha fazla kod göster. –

0

MySQL veritabanından sonuç almak için mysql_use_result() işlevini kullanabilirsiniz. Bu durumda, mysql_fetch_row() çağrıldığında satırlar istemciye tek tek gönderilir. Tüm satır getirilen kadar, veritabanı kolu "kilitli" bir:

mysql_use_result() kullanarak, bir NULL değeri döndürülür kadar aksi halde unfetched satırlar için belirlenen sonucunun bir parçası olarak döndü vardır mysql_fetch_row() yürütmek zorundadır Bir sonraki sorgunuz. Bunu yapmayı unutursanız C API , Commands out of sync; you can't run this command now hatasını verir!

mysql_store_result() ürününü yedek olarak deneyin. Bu işlev tüm satırları bir kerede getirir.

+0

Bunun içinde başka bir sorgu çalıştırmam gerek –

İlgili konular