gpt4 book ai didi

php - SQL 查询没有被执行

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:19 26 4
gpt4 key购买 nike

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

最佳答案

我认为您的问题在于转义,或者更确切地说是列名的“非转义”。您知道“日期”是 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' 依赖于连接的编码来确定哪些字符需要转义以及如何转义。

关于php - SQL 查询没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11702004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com