php - 尝试插入时出现 SQL 语法错误

标签 php mysql sql

<分区>

我正在编写一段代码,允许用户相互发送消息。每当我尝试将消息插入数据库时​​,都会出现语法错误,但我终究无法弄清楚我的错误是什么。我知道问题不在 connect.php 中。此外,我正在为 $from$to$message 获取适当的值,所以这不是问题所在。这是我的代码:

session_start();

require_once('../setup/connect.php');

$from = $_SESSION['id'];
$to = $_REQUEST['id'];

$message = trim($_POST['msg_body']);    
$insert = "INSERT INTO messages(to, from, msg) VALUES('$to', '$from', '$message')";

mysql_query($insert) or die(mysql_error());

header("Location: view_profile.php?id=$to");

这是 mysql_error() 生成的报告:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'to, from, msg) VALUES('7', '6', 'Hey how are you?')' at line 1

这是我的数据库结构的图像:enter image description here

感谢您的帮助!

最佳答案

TOFROM是保留关键字,必须用反引号转义

INSERT INTO messages(`to`, `from`, msg) 
VALUES('$to', '$from', '$message')

如果您有时间或有权更改,请不要使用保留关键字列表中的名称。它会让你 future 头痛。

作为旁注,如果值 (s) 来自外部,则查询容易受到 SQL 注入(inject) 的攻击。请查看下面的文章,了解如何预防它。通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。

关于php - 尝试插入时出现 SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462415/

相关文章:

javascript - 使用POST将JS值传递给PHP(无需提交和刷新)

mysql - SELECT 和 INSERT 到另一个表的字段

php - php从数据库中获取图片的方法

sql - 如何将 Reporting Services 多值参数发送到 SQL Server 函数?

php - 允许在 HTMLPurifier 中解析完整的 html

php - SQL - 显示名称而不是 ID

mysql - SQL 选择 id=max(id) 的行

sql - 如何知道一组RabbitMQ任务何时完成?

php - 有没有办法恢复断电后丢失的文件?

mysql - 添加一列需要另一列的默认值?