2011-06-25 10 views
0

私は自分のウェブサイトにあるものをmysqlデータベースに記録する2つのスクリプトを持っています。彼らは両方とも、同じサーバー上の同じデータベースを使用しますが、唯一の違いはテーブルです。私は値を挿入するために使用していたコードは次のようになります。1つのスクリプトは動作し、他はない理由mysqlサーバにデータを挿入できないのはなぜですか?

INSERT INTO table(full_name, email_address, phone_number, message, ip_address, agent) 
VALUES ('$fn', '$email', '$telephone', '$comments', '$ip', '$agent') 

誰も教えてもらえますか?

+4

リトルボビーテーブルはあなたと一言が欲しいです。 –

+1

エラーが表示されますか?はいの場合はどちらですか? –

+4

テーブルは本当に 'table'という名前ですか?その単語( 'table')は[SQLで予約されています](http://developer.mimer.com/validator/sql-reserved-words.tml)であり、エスケープする必要があります...しかし、名前* ... **とプレースホルダー**。 (注入攻撃や予期しないデータのように、$ commentには 'silly'php'が含まれています** **あなたがプログラムを壊してしまいます** *検出が難しい* - おっと!) –

答えて

3

エラーはほぼエラーメッセージで'が始まるところで正確に発生します。 logと呼ばれ、私はそれが予約MySQLのキーワードだと思いませんでしたが、あなたはバッククォートでテーブル名を引用し、括弧の前にスペースを入れてみてください、あなたがテーブルに挿入しているように見えます:

INSERT INTO `log` (tm, ref, agent, ip, page) VALUES (....); 

UPDATELOG()はキーワードではありませんが、MySQLの数値関数です。また、カッコのすぐ隣に使用しているので、MySQLはこれを誤った関数呼び出しと解釈している可能性があります。 http://dev.mysql.com/doc/refman/5.0/en/numeric-functions.html

+0

これはうまくいきましたMichaelありがとうございました私に混乱しているこの部分は、この同じスクリプトを別のWebサーバーとまったく同じように使用していて、完全に機能しているという事実です。 Linuxで問題が発生している可能性がありますか? –

+0

@cheeseisedibleわかりません。それらの間の大文字と小文字の区別に違いがあります(Winは機密ではありません)が、関数名に影響するかどうかはわかりません。 –

0

mysql_error()を使用してエラーをチェックしてください。

mysql_query("INSERT INTO table(
     full_name, email_address, phone_number, message, ip_address, agent) 
     VALUES ('$fn', '$email', '$telephone', '$comments', '$ip', '$agent')") 
     or die(mysql_error()); 
関連する問題