尝试插入时SQL语法出错

Mat*_*ter 1 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");
Run Code Online (Sandbox Code Playgroud)

这是报告mysql_error()生成的:

您的SQL语法有错误; 查看与您的MySQL服务器版本相对应的手册,以便在'to,from,msg'附近使用正确的语法VALUES('7','6','嘿,你好吗?')在第1行

这是我的数据库结构的图像:在此输入图像描述

我感谢任何帮助!

Joh*_*Woo 5

TO并且FROM是保留关键字,必须使用反引号进行转义

INSERT INTO messages(`to`, `from`, msg) 
VALUES('$to', '$from', '$message')
Run Code Online (Sandbox Code Playgroud)

如果您有时间或特权要更改,请不要使用保留关键字列表中的此类名称.它会给你未来的头痛.

作为一个旁注,查询是脆弱的SQL Injection,如果值(小号)从外面走了进来.请查看下面的文章,了解如何防止它.通过使用PreparedStatements,您可以摆脱使用值周围的单引号.