PHP/SQL查询难题
出于某种原因,这个查询激活了PHP的die,我为它设置了die。我不明白,因为它在SQL中运行良好,而且所有PHP变量都是正确的。名称是varchar12,消息是文本,InRoom是SmallInt,Time是DateTime,IP是文本PHP/SQL查询难题,php,sql,Php,Sql,出于某种原因,这个查询激活了PHP的die,我为它设置了die。我不明白,因为它在SQL中运行良好,而且所有PHP变量都是正确的。名称是varchar12,消息是文本,InRoom是SmallInt,Time是DateTime,IP是文本 <?php require 'functions.php'; $room = sanitize($_POST['room']); $name = sanitize($_POST['name']); $message =
<?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");
?>
时间是MySQL中函数的名称,因此您的查询具有模糊性
用反勾号分隔字段名称:
INSERT INTO `fate_chat_messages`
(`Name`, `Message`, `InRoom`, `Time`, `IP`)
VALUES (
"a", "b", "c", CURRENT_TIMESTAMP(), "d");
并将代码添加到程序中,以显示MySQL给您的错误消息。您的单引号和双引号似乎有问题。无论如何,您都应该转义变量,但您的查询字符串应该更像这样:
"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) ."'
)";
对不起,伙计们。使用James告诉我如何使用的mysql_错误,我发现我的IP字段设置为unique。删除该选项修复了该程序。谢谢大家的帮助。请用标题描述问题。你不能在那里写问题是有原因的,这并不是因为我们喜欢阅读人们创造性的同义词。@CyanPrime:为什么不用MySQL\u error检索MySQL错误文本呢?不要介意修复它,你甚至还没有调试它。@Lightness在轨道上比赛,你不必这么粗鲁。我不知道mysql的错误。您能解释一下如何使用它吗?与其使用或DieContreat create post,不如尝试使用或DieContreat create post..mysql\u error查看您的错误。如果您能够从一开始就看到错误,您甚至可能不需要这个线程。@CyanPrime:我一点也不粗鲁。解释PHP MySQL API如何工作超出了此评论线程的范围。PHP手册是一个很好的参考资料,有很多例子。