2012-04-03 9 views
0

を挿入している...MySQLのINSERT文は、私はこのようになり、単純なINSERT文を持っている「0」ではなく、変数の内容

mysql_query("INSERT INTO comments (`user_id`, `profile_id`, `comment`) VALUES ('{$_SESSION['user_id']}', ('$problemID'), ('$comment'))") or die(mysql_error()); 

すべてが離れて$ problemID変数から細かい挿入されています。 MySqlテーブルでは、単に0を返しています。テーブルは最大11文字の整数を受け取るように設定されています。

変数自体は別のページに設定されているが、これを使用して取得された...

$problemID = intval($_GET["problem"]); 

私は$ problemIDをエコーし​​た場合、私はそれが勝った理由としてわからないんだので、私は、正しい番号を取得しますこの番号をテーブルに挿入するだけです。どのポインタも素晴らしいでしょう。

+3

あなたの投影には '' profile_id''があります。これは '$ problemID'と同じですか?そうでない場合は、存在しない列に値を挿入しようとしている可能性があります。 –

+1

なぜかっこは囲まれていますか? –

+0

エラーが発生しましたか?または、クエリは正常に実行されますか? –

答えて

0

私の勘では、あなたが持っているとして、あなたのINSERTクエリは、コメントテーブルの間違った列を参照しているということです以下:

INSERT INTO comments (`user_id`, `profile_id`, `comment`) 

が、私の推測ではあるので、あなたは、$problemIDという名前の変数を参照しています

INSERT INTO comments (`user_id`, `problem_id`, `comment`) 

おそらく、クエリコードをコピーして貼り付けましたが、投影の列名を変更するのを忘れたのでしょうか?

+2

私はそれが問題だとは思わない、そうでなければ、彼は行を一緒に挿入することができません。 – Churk

+0

私はそれがそうだったが、列名が実際に正しいことを望む。 – GuerillaRadio

3

あなたのコメントがより明確に消毒されていることを確認してください。このような何かを試してみてください:

mysql_query(sprintf(
    "INSERT INTO 
     comments (`user_id`, `profile_id`, `comment`) 
    VALUES  
     (%s, %s, '%s')", 
    intval($_SESSION['user_id']), 
    intval($problemID), 
    mysql_real_escape_string($comment) 
)) or die(mysql_error()); 

だけ徹底すること、あなたのテーブルがが上のタックオートインクリメントで別のプライマリインデックス(別名エントリID)を持っていることを確認してください。あなたのMySQLの挿入が正常に動作している可能性がありますが、受信テーブルは追加エントリを保持する必要があるかどうかを知りません。

+0

あなたのコードを試しましたが、同じことが起こります。私はそれができないように自動増分を選択した 'id'列を持っています。 – GuerillaRadio

+0

あなたが挿入しているテーブル構造だけをMySQLエクスポートして問題に追加することはできますか? – pp19dd

+0

PHPまたはMySqlではなく、フォームアクションに問題が発生していた問題を修正しました。ご協力いただきありがとうございます。 – GuerillaRadio

0

角括弧を削除して、変数を文字列に含めるのではなく、追加してください。

mysql_query("INSERT INTO comments (`user_id`, `profile_id`, `comment`) 
VALUES ('".$_SESSION['user_id']."', ".$problemID.", '".mysql_real_escape_string($comment)."')") or die(mysql_error()); 
関連する問題