Php 凯普得到了;查看与您的MySQL服务器版本对应的手册,以了解使用near''';)';在1号线

Php 凯普得到了;查看与您的MySQL服务器版本对应的手册,以了解使用near''';)';在1号线,php,mysql,sql,connect,Php,Mysql,Sql,Connect,我知道有一些帖子接近我在这个PHP查询中遇到的错误,但我还没有找到任何能真正回答我问题的帖子。我正在使用一个MYSQL数据库,并尝试使用这里显示的一个简单脚本输入数据 include("includes/DbConnection.php"); global $connect; $name = $_POST['name']; $year = $_POST['year']; $description = $_POST['about']; $query = "

我知道有一些帖子接近我在这个PHP查询中遇到的错误,但我还没有找到任何能真正回答我问题的帖子。我正在使用一个MYSQL数据库,并尝试使用这里显示的一个简单脚本输入数据

include("includes/DbConnection.php");

    global $connect;

    $name = $_POST['name']; 
    $year = $_POST['year'];
    $description = $_POST['about']; 

$query = "INSERT INTO object (Name, Year, Description) VALUES ('{$name}',{$year},'{$description}')";

$query = mysql_query($query, $connect);

if(!$query){
    die("Database Query Failed: " . mysql_error());
}

当我运行脚本时,我得到一个错误
您的SQL语法中有一个错误;请查看与MySQL服务器版本对应的手册,以了解在第1行“)”附近使用的正确语法,但我找不到该脚本不起作用的任何原因。我遗漏了什么吗?

年份列的类型是什么?是整数吗?如果没有,则将值放在单引号中,如下所示
“{$year}”
。根据@minitech escape user data的建议,在使用
mysql\u real\u escape\u string

存储到数据库之前,您的描述是否包含撇号?无论如何,您在这里完全容易受到SQL注入的攻击!使用
mysql\u real\u Escape\u string
(int)
对输入进行转义和强制转换。然后删除mysql,因为它已经被弃用了,而且一般来说并不安全,使用PDO进行参数化查询Year是数据库中的一个整数。