2012-02-24 55 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字段设置为唯一。删除那个固定的程序。感谢大家的帮助。