2013-02-23 57 views
0

我是PHP和SQL的新手,但是正在創建一個登錄系統。我遇到的問題是:PHP啓動了SQL語法錯誤

您的SQL語法錯誤;檢查 對應於你的MySQL服務器版本使用 附近「姓鍵入」)」在行正確的語法5

所以我期待到代碼的手冊,我相信它是指:

mysql_query("INSERT INTO users (email, password, hash, forename, surname) VALUES(
     '". mysql_escape_string($email) ."', 
     '". mysql_escape_string($password) ."', 
     '". mysql_escape_string($hash) ."', 
     '". mysql_escape_string($forename) .", 
     '". mysql_escape_string($surname) ."') ") or die(mysql_error()); 

看完後,我看不到語法錯誤。任何人發現它?

+2

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – 2013-02-23 23:43:13

+1

如果你打印出結果SQL,你的錯誤將很容易找到 – 2013-02-23 23:43:48

+0

感謝您的意見,但在閱讀PDO信息時,我不知道如何選擇表。這會讓我很難:) – Glenn 2013-02-24 00:07:19

回答

3

在此行中:

'". mysql_escape_string($forename) .", 
            // ^--- no closing single quote here. 

你忘了右引號。

+0

它會讓我標記爲正確。謝謝。 – Glenn 2013-02-23 23:45:16

+0

@Splatter歡迎。 – Daedalus 2013-02-23 23:45:48