2012-04-10 7 views
1


を使用してINSERTクエリを実行すると、私のコードです:
私はここC. <br> からmysqlデータベースに挿入するC

...

for (i=0;i<nb_of_subscribers*hits_subscriber;i++) 

    { RandomSub= rand() % nb_of_subscribers + 1; 
    RandomContent= rand() % (contents_tag*tags) + 1; 

    mysql_query(conn, "INSERT INTO CONTENT_HITS(CONTENT_ID,SUBSCRIBER_ID) VALUES(RandomContent,RandomSub)");} 

... 問題があります:挿入クエリが実行されず、データベースに何も表示されません。
ありがとうございます。

答えて

1

RandomSubRandomContent(あなたが宣言した)の値は、実際に実行しているクエリに入りますか?実行しようとしています

INSERT INTO CONTENT_HITS(CONTENT_ID,SUBSCRIBER_ID) VALUES(RandomContent,RandomSub) 

2つの文字列を(おそらく)2つの整数フィールドに入れようとすると失敗します。

あなたは文字列にRandomContentRandomSubの値を代入する必要があります。@SpacedMonkeyが言うように

char q[1024]; 
for (i=0;i<nb_of_subscribers*hits_subscriber;i++) 
{ 

    RandomSub= rand() % nb_of_subscribers + 1; 
    RandomContent= rand() % (contents_tag*tags) + 1; 

    sprintf(q,"INSERT INTO CONTENT_HITS(CONTENT_ID,SUBSCRIBER_ID) VALUES(%d,%d)",RandomContent,RandomSub); 

    mysql_query(conn, q); 
} 

- あなたは正直に言うと、この

かなり基本的なCのもののために準備されたステートメントを使用する必要があります。

PS - 一部は受け入れない - 10%はちょうど別の少し基本的な質問

+0

ちょっと別の少し基本的な質問:どのようにcontent_hitsのすべての行を削除するには?ありがとうございました。 – holy

3

文字列に変数の名前を書き込むことは、その値を書き込むことと同じではありません。クエリ文字列に値を取得するための

一つの方法は、(はsprintfを使用している)、このような:

for (i = 0; i < nb_of_subscribers * hits_subscriber; i++) { 
    char query[80] = {0}; 

    RandomSub= rand() % nb_of_subscribers + 1; 
    RandomContent= rand() % (contents_tag * tags) + 1; 
    sprintf(query, "INSERT INTO CONTENT_HITS(CONTENT_ID,SUBSCRIBER_ID) VALUES (%d,%d)", RandomContent, RandomSub); 
    mysql_query(conn, query); 
} 

が、ここで記載されているようにあなたは本当にプリペアドステートメントを使用する必要があります。どうすればよい
http://dev.mysql.com/doc/refman/5.1/en/c-api-prepared-statements.html

+0

素晴らしいではありません。どのようにcontent_hitsのすべての行を削除するには?ありがとうございました。 – holy

+0

CONTENT_HITSからすべての行を削除する方法を尋ねる場合は、SQLの学習に関する書籍を購入する必要があります。真剣に。あなたがそれをするのに気にすることができない場合は、Googleの "SQLの基礎" – DaveyBoy

+0

私はそれを行う方法を意味するC – holy

関連する問題