2012-02-24 30 views
-3

由於某種原因,這個查詢激活了PHP爲我設置的死亡。我只是不明白,因爲它在SQL中正常工作,並且所有的PHP變量都是正確的。名稱是varchar(12),消息是文本,InRoom是SmallInt,Time是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

請讓您的標題描述問題。有一個_reason_你不能在那裏寫「問題」,這不是因爲我們喜歡閱讀人們的創意同義詞。 – 2012-02-24 20:12:13

+0

顯示你的$ db是什麼,它是一個連接obj? – 2012-02-24 20:15:35

+0

它死了無法創建帖子,我不能告訴你問題是什麼。如果我知道它,我可以自己修復它 – CyanPrime 2012-02-24 20:16:05

回答

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字段設置爲唯一。刪除那個固定的程序。感謝大家的幫助。