PHP / SQL查询困难

时间:2012-02-24 20:11:45

标签: php sql

由于某种原因,这个查询会激活我为它设置的PHP模具。我只是没有得到它,因为它只在SQL中工作正常,并且所有PHP变量都是正确的。名称为varchar(12),Message为Text,InRoom为SmallInt,Time为DateTime,IP为文本。

<?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");
?>

3 个答案:

答案 0 :(得分:3)

Time是MySQL中函数的名称,因此您的查询含糊不清。

在反引号中分隔字段名称:

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

并在程序中添加代码,以显示MySQL为您提供的错误消息

答案 1 :(得分: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) ."'
)";

答案 2 :(得分:0)

对不起这个家伙。使用James告诉我如何使用的mysql_error()我发现我的IP字段设置为唯一。删除修复程序。谢谢大家的帮助。