mySQL语法错误


error in mySQL syntax

这个SQL查询出了什么问题?!

if(isset($_POST['submit'])){
    $name = $_POST['name'];
    $author = $_POST['author'];
    $pub = $_POST['pub'];
    $sibn = $_POST['sibn'];
    $year = $_POST['year'];
    $version = $_POST['version'];
    $desc = $_POST['desc'];
    $selected_db = mysql_select_db("bookstore",$con);
    $query = "INSERT INTO introducebook (name, author, pub, sibn, year, version, desc) VALUES ('{$name}', '{$author}', '{$pub}', '{$sibn}', {$year}, {$version}, '{$desc}');" ;
    $result = mysql_query($query,$con);
    if(!$result){die('could not perform query'.mysql_error());}
    echo mysql_affected_rows();
}
?>

错误是(我通过了所有输入测试):

您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第1行的"desc)VALUES"("测试"、"测试"answers"测试")附近使用的正确语法

您需要使用backticks 来转义MySQL中的保留字,如desc

INSERT INTO introducebook (name, ..., `desc`) VALUES ...

要传递纯文本,需要括号,这将是正确的

INSERT INTO introducebook (`name`, `author`, `pub`, `sibn`, `year`, `version`, `desc`) VALUES ('{$name}', '{$author}', '{$pub}', '{$sibn}', '{$year}', '{$version}', '{$desc}')

是的,你也需要回溯。