2013-12-15 78 views
0

这个SQL查询有什么问题?mySQL语法错误

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('test','test','test','test',test,test''test')'附近使用正确的语法

回答

2

你需要逃避reserved words in MySQLdesc与反引号

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

是的,这是正确的...非常感谢你... –

0

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

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

,是的,你还需要反引号。