我新的SQL/PHP和我不能克服的錯誤消息:如何在SQL語法中調試錯誤?
"You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '1',"
我試圖調試這個錯誤,但我在我的劇本找「1」,我只有該位:
//enter information into table
$sql = "INSERT INTO $_SESSION[table_name] VALUES
('$_POST[first_name]', '$_POST[last_name]', '$_POST[user_name]',
password('$_POST[password]'), 'Administrators', '', '', '0', '$_SESSION[admin_email]',
'$_POST[redirect_to]', '1', '$date')";
$result = @mysql_query($sql,$connection) or die(mysql_error());
if($result)
{...
我沒有找到任何與此問題。
我不知道如何調試這個,我應該如何繼續查找錯誤?任何線索?
我不知道我期待在正確的地方的腳本,但是這是我的「1」的唯一入口,該錯誤消息告訴我一下...
在檢查手冊後,SQL中的語法似乎是正確的...我在WAMP服務器中使用MySQL 5.5.24。
我試圖安裝「登錄重定向v1.31」用於用戶身份驗證。
如果有人能幫助我,我會非常感激!
您應該做的第一件事就是打印出您正在生成的SQL - 其中的某些內容不符合您期望的格式。 – andrewsi
它可能無助於回答你的問題,但你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果您不確定要使用哪一個,請閱讀本文(http://www.deprecatedphp.com/mysql_/)。 – Matt
**你的代碼容易受到SQL注入**你真的應該使用[prepared statements](http://stackoverflow.com/a/60496/623041),你將變量作爲參數傳遞給它沒有得到評估的SQL。如果你不知道我在說什麼,或者如何解決它,請閱讀[Bobby Tables]的故事(http://stackoverflow.com/questions/332365/xkcd-sql-injection-please-explain) 。 – eggyal