0

我正在尝试用 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>
4

3 回答 3

2

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

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

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

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

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

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

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

于 2012-07-28T14:53:40.133 回答
2

需要先建立数据库连接,因为逃逸功能是在我的mysql中执行的。

$con = mysql_connect("localhost","username","password");
$message = mysql_real_escape_string($m);
于 2012-07-28T15:08:39.233 回答
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> 工作代码如下:

<?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>
于 2012-07-28T14:57:36.833 回答