2012-12-25 86 views
4

我遇到了MySQL 5.5.24和PHP 5.4.3的問題。我有以下的HTML/PHP代碼:PHP語法錯誤

<?php 
function connect() { 
    $con = mysql_connect("127.0.0.1", "root", ""); 
    if (!$con) { 
     die("Could not connect: " . mysql_error()); 
    } 
    mysql_select_db("game");  
} 

function protect($string) { 
    return mysql_real_escape_string(strip_tags(addslashes($string))); 
} 


if (isset($_POST[ 'register' ])) { 
    connect(); 
    $username = protect($_POST[ 'username' ]);  
    $register = mysql_query("SELECT 'id' FROM 'user' WHERE 'username'='$username'") or die(mysql_error()); 
    if (mysql_num_rows($register) > 0) { 
     echo "That username is already in use!"; 
    } else { 
     $ins = mysql_query("INSERT INTO 'user' ('username') VALUES ('$username')") or die(mysql_error()); 
     echo "You have registered!"; 
    } 
} 
?> 
<form action="register.php" method="POST">   
Username: <input type="text" name="username"/><br/> 
<input type="submit" name="register" value="Register"/> 
</form> 

無論我輸入,MySQL將總是返回

"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 ''user' WHERE 'username'='XXX'' at line 1" 

我檢查這些查詢與phpMyAdmin和他們的工作就好了!也沒有連接問題。我甚至嘗試了簡單的"SELECT * FROM 'user'",結果相同。我根本就沒有得到任何迴應,只是提到有關格式錯誤的SQL語法的錯誤。

現在我檢查了大量具有相同錯誤的文章,並且在每種情況下,問題都是使用了PHP關鍵字或丟失/誤拼變量名稱和類型。我現在查了一百遍,我找不到任何錯誤。我很安靜新到PHP所以也許我錯過了什麼......

我的一個最後實驗中改變數據庫的排序規則以及存儲引擎,也沒有結果......

希望你們看到我不能做什麼! :-)

順便說一句,我正在運行Windows 7和WAMP 2.2。

+1

也許你應該重新命名'保護()''到裂傷()';) – alex

+1

通用濾波功能是壞的。 'mysql_'也不好。給PDO和準備報表一試! – Ryan

+0

爲表名稱,或者使用back ticks,或者根本不使用任何引用表名:SELECT id FROM user ... – kennypu

回答

3
SELECT 'id' FROM 'user' WHERE 'username' 

變化'`(反引號)

你在談論你應該使用反引號的表名和列名是什麼。當你在談論的字符串(如值),則使用單/雙引號

+0

噢,我的上帝......是的,那就是了。非常感謝!! – user1927431