2012-02-24 15 views
-3

何らかの理由で、このクエリは私が設定したPHPのダイをアクティブにします。私はちょうどSQLでうまく動作し、すべてのPHP変数が正しいので、それを取得しません。名前はvarchar(12)、メッセージはテキスト、InRoomはSmallInt、時刻はDateTime、IPはテキストです。PHP/SQLクエリの苦境

<?php 
    require 'functions.php'; 

    $room = sanitize($_POST['room']); 
    $name = sanitize($_POST['name']); 
    $message = sanitize($_POST['message']); 
    $ip = $_SERVER['REMOTE_ADDR']; 

    //print_r($_POST); 
    $query ='INSERT INTO fate_chat_messages(Name, Message, InRoom, Time, IP) VALUES("'.$name.'", "'.$message.'", '.$room.', CURRENT_TIMESTAMP, "'.$ip.'")'; 
    $sql_result = mysql_query($query, $db) or die("Can't create post"); 
?> 
+0

タイトルをご質問ください。そこに「問題」を書くことができないという理由があります。それは、人々の創造的な同義語を読むことを楽しむためではありません。 –

+0

あなたの$ dbにあるものを表示します。接続objですか? –

+0

死にます投稿を作成できませんし、問題の内容を教えてもらえません。もし私がそれを知っていれば、私はそれを自分で修正することができます – CyanPrime

答えて

3

Timeは、MySQLの関数名であり、クエリのあいまいさがあります。バッククォートで

区切るようフィールド名:

INSERT INTO `fate_chat_messages` 
    (`Name`, `Message`, `InRoom`, `Time`, `IP`) 
VALUES (
    "a", "b", "c", CURRENT_TIMESTAMP(), "d"); 

そして表示にあなたのプログラムにMySQLがあなたにを与えるエラーメッセージをコードを追加します。

0

あなたは一重引用符で、二重引用符は混乱しているようです。とにかく変数をエスケープする必要がありますが、クエリ文字列は次のようになります。

"INSERT INTO fate_chat_messages(
    `Name`, 
    `Message`, 
    `InRoom`, 
    `Time`, 
    `IP` 
) VALUES('" 
    .mysql_real_escape_string($name) ."', '" 
    .mysql_real_escape_string($message) ."', " 
    .mysql_real_escape_string($room) ."', 
    CURRENT_TIMESTAMP(), '" 
    .mysql_real_escape_string($ip) ."' 
)"; 
0

ごめんなさい。 Jamesが私に使い方を教えてくれたmysql_error()を使うと、自分のIPフィールドが一意に設定されていることが分かりました。それを削除してプログラムを修正しました。助けていただきありがとうございます。