[英]How to debug an error in SQL syntax?
我是SQL / PHP的新手,我無法克服錯誤消息:
"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 。
我正在嘗試安裝“ Login-Redirect v1.31 ”進行用戶身份驗證。
如果有人能幫助我,我真的很感激!
停
在您使用此代碼進一步了解之前,請閱讀有關SQL注入攻擊和修復您的代碼的信息
您的語法錯誤幾乎肯定是由注入錯誤引起的,毫無疑問是來自您插入查詢的數據中'
某個地方。 您將原始用戶提供的數據傳遞到查詢中,允許惡意用戶接管您的服務器,銷毀您的數據庫,踢你的狗等等......
除此之外,執行echo $sql
並將結果粘貼到此處,我們將能夠准確地向您顯示錯誤'
位置。
第一步是隔離查詢的哪個部分引用。
您的錯誤是引用列,並插入字段。
我看到你傳遞'1'
。 '1'
是一個字符串,而1
是一個整數。
如果Column Schema說它是int
列類型,則刪除單引號並再試一次。
對於初學者這樣做:
使用echo
語句將$ sql打印到屏幕(或將其記錄到文件中)。
將語句復制到您喜歡的SQL編輯器並完成它,嘗試找到錯誤。
在不知道執行代碼時綁定到哪些變量的情況下,很難調試動態SQL語句。
非常感謝你幫我解決這個問題。
在變量上打印$echo
給了我答案。 問題是$_POST[redirect_to]
無法正常工作,因為它之前沒有很好地定義。
我將輸入變量更改為空字符串並且它有效:
$sql = "INSERT INTO $_SESSION[table_name] VALUES
('$_POST[first_name]', '$_POST[last_name]', '$_POST[user_name]',
password('$_POST[password]'), 'Administrators', '', '', '0',
'$_SESSION[admin_email]', ' ', '1', '$date')";
$result = @mysql_query($sql,$connection) or die(mysql_error());
if($result){
// ...
}
我將研究SQL injections
的漏洞並將其解決,我對此非常陌生。
感謝您的更正和提示!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.