SQL Query无法执行

时间:2012-07-28 14:47:04

标签: php mysql sql insert

我正在尝试用PHP创建一个非常基本的评论系统。 问题是,当我提交表单时,新行不会插入我的MySQL表中。 这是我的代码(有人可以检查一下是什么问题吗?):

<?php
$act = $_POST['act'];
if($act == 1) {
    $m = $_POST['message'];
    $m = strip_tags($m);
    $message = mysql_real_escape_string($m);
    $name = "Anonymous"; //Static username for demonstration purposes
    $date = "2012-7-28"; //Static date for demonstration purposes

    $con = mysql_connect("localhost","username","password");
    if (!$con){die('Could not connect: ' . mysql_error());}

    mysql_query("INSERT INTO comments (name, message, date) VALUES ('$name', '$message', '$date')");
    mysql_close($con);
}
?>

<form action="comments.php" method="post"> 
    <input type="text" name="message">
    <input type="hidden" name="act" value="1">
    <input type="submit" name="submit" value="Submit">
</form>

3 个答案:

答案 0 :(得分:2)

我认为您的问题取决于转义,或者更确切地说是列名称的“非转义”。您知道'date'是mySQL中的函数名吗?

尝试将所有表名和列名放在反引号中。

mysql_query("INSERT INTO `comments` (`name`, `message`, `date`) VALUES ('$name', '$message', '$date')");

此外,为了进一步参考,发布错误消息永远不会伤害寻找答案。 除此之外,我发现你的查询没有什么特别的错误。

编辑:DUH!我错过了一些明显的事 请执行'mysql_select_db('name_of_database');在查询之前。 否则它将不知道在哪里查找您指定的表。

为了完整起见(正如Michael Besteck指出的那样),只有在建立连接后才需要执行'mysql_real_escape_string'。

也就是说,因为'escape_string'依赖于连接的编码来确定需要转义哪些字符以及如何转义。

答案 1 :(得分:2)

首先建立数据库连接是必要的,因为我的mysql执行了转义函数。

$con = mysql_connect("localhost","username","password");
$message = mysql_real_escape_string($m);

答案 2 :(得分:0)

使用此代码运行脚本并发布mysql_error

<?php
$act = $_POST['act'];
if($act == 1) {
$m = $_POST['message'];
$m = strip_tags($m);
$message = mysql_real_escape_string($m);
$name = "Anonymous"; //Static username for demonstration purposes
$date = "2012-7-28"; //Static date for demonstration purposes

$con = mysql_connect("localhost","username","password");
if (!$con){die('Could not connect: ' . mysql_error());}

mysql_query("INSERT INTO comments (name, message, date) VALUES ('$name', '$message', '$date')") or die(mysql_error());
mysql_close($con);
}
?>

<form action="comments.php" method="post"> 
<input type="text" name="message">
<input type="hidden" name="act" value="1">
<input type="submit" name="submit" value="Submit">
</form>

UODATE&GT; 工作代码如下:

<?php
$act = $_POST['act'];
if($act == 1) {
$m = $_POST['message'];
$m = strip_tags($m);
$message = mysql_real_escape_string($m);
$name = "Anonymous"; //Static username for demonstration purposes
$date = "2012-7-28"; //Static date for demonstration purposes

$con = mysql_connect("localhost","username","password");
mysql_select_db('databasename');
if (!$con){die('Could not connect: ' . mysql_error());}
mysql_query("INSERT INTO comments (name, message, date) VALUES ('$name', '$message', '$date')") or die(mysql_error());
 mysql_close($con);
}
?>

<form action="comments.php" method="post"> 
<input type="text" name="message">
<input type="hidden" name="act" value="1">
<input type="submit" name="submit" value="Submit">
</form>