2012-08-31 135 views
1

這是一個小例子,它給了我一個MySQL語法錯誤。 Connect.php連接到正確的數據庫,可以與其他項目和代碼一起使用。我知道connect.php中的代碼是正確的。它給我一個關於的MySQL語法錯誤。它沒有給出比這更詳細的信息:MYSQL PHP腳本拋出語法錯誤

你的SQL語法錯誤;檢查手冊中 對應於你的MySQL服務器版本正確的語法使用 附近「鍵WHERE key =」 XXXXXXXXXXXX「」在1號線

我把這個代碼小樣本從主項目,它仍然會拋出錯誤。

<?php 
    require "connect.php";   
    $keyCheck = mysql_query("SELECT * FROM keys WHERE `key`='".$_POST['betakey']."'" , $con); 

    if (!$keyCheck) { 
     echo mysql_error(); 
     exit; 
    } else { 
     $keyRows = mysql_num_rows($keyCheck); 
    if ($keyRows == 0) { 
     echo "This key is invalid!"; 
     exit; 
    } 
?> 

編輯:我得到的管理員重命名錶,你們幫我解決一些潛在的安全隱患。

+0

嘗試更改「至」引號,其中鍵= –

+0

您是否正在清理輸入內容? –

+1

這就是爲什麼PHP被認爲是醜陋的以及如何編寫帶有安全漏洞的代碼的一個很好的例子 - 請嘗試使用PDO來幫助自己避免被黑客入侵。 –

回答

6

我很肯定keys是一個保留字。無論如何,你總是應該將數據庫,表和列名稱反引號。不僅僅是「有時」,就像你在這個例子中一樣。總是。

Source

+0

+1,但你應該包括一個例子。 –

+0

如果不使用保留字**,那麼在構建數據庫時不要使用反引號來糾正它,這樣會更好。 –

+1

感謝您的編輯Josh - 只需幾秒就可以擊敗我XD –