2013-03-25 80 views
0

對不起,我是PHP新手,請耐心等待。我正在創建一個用戶界面,當我註冊時說我已經註冊,但它不會將數據存儲到數據庫中。此外,我每次註冊時都會出現錯誤「您的SQL語法有錯誤;請查看與您的MySQL服務器版本相對應的手冊,以便在第1行''testing101''附近使用正確的語法。」有人可以幫幫我嗎!爲什麼數據不會存儲在我的數據庫中?錯誤地提示「你的SQL語法錯誤; ...」

<?PHP 

$uname = ""; 
$pword = ""; 
$errorMessage = ""; 
$num_rows = 0; 

function quote_smart($value, $handle) { 

    if (get_magic_quotes_gpc()) { 
     $value = stripslashes($value); 
    } 

    if (!is_numeric($value)) { 
     $value = "'" . mysql_real_escape_string($value, $handle) . "'"; 
    } 
    return $value; 
} 

if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 


    $uname = $_POST['username']; 
    $pword = $_POST['password']; 

    $uname = htmlspecialchars($uname); 
    $pword = htmlspecialchars($pword); 


    $uLength = strlen($uname); 
    $pLength = strlen($pword); 

    if ($uLength >= 10 && $uLength <= 20) { 
     $errorMessage = ""; 
    } 
    else { 
     $errorMessage = $errorMessage . "Username must be between 10 and 20 characters" . "<BR>"; 
    } 

    if ($pLength >= 8 && $pLength <= 16) { 
     $errorMessage = ""; 
    } 
    else { 
     $errorMessage = $errorMessage . "Password must be between 8 and 16 characters" . "<BR>"; 
    } 


    if ($errorMessage == "") { 

    $user_name = "root"; 
    $pass_word = ""; 
    $database = "user authentication"; 
    $server = "127.0.0.1"; 

    $db_handle = mysql_connect($server, $user_name, $pass_word); 
    $db_found = mysql_select_db($database, $db_handle); 

    if ($db_found) { 

     $uname = quote_smart($uname, $db_handle); 
     $pword = quote_smart($pword, $db_handle); 




     $SQL = "SELECT * FROM login WHERE USERNAME = '".$uname."'"; 
     $result = mysql_query($SQL)or die(mysql_error()); 
     $num_rows = mysql_num_rows($result); 

     if ($num_rows > 0) { 
      $errorMessage = "Username already taken"; 
     } 

     else { 


    $SQL = "INSERT INTO login (USERNAME, PASSWORD) VALUES ('{$uname}', MD5('{$pword}'))"; 
      $result = mysql_query($SQL); 

      mysql_close($db_handle); 

     //================================================================================= 
     // START THE SESSION AND PUT SOMETHING INTO THE SESSION VARIABLE CALLED login 
     // SEND USER TO A DIFFERENT PAGE AFTER SIGN UP 
     //================================================================================= 

      session_start(); 
      $_SESSION['login'] = "1"; 

      header ("Location: page1.php"); 

     } 

    } 
    else { 
     $errorMessage = "Database Not Found"; 
    } 




    } 

} 


?> 

    <html> 
    <head> 
    <title>Basic Login Script</title> 


    </head> 
    <body> 


<FORM NAME ="form1" METHOD ="POST" ACTION ="signup.php"> 

Username: <INPUT TYPE = 'TEXT' Name ='username' value="<?PHP print $uname;?>" maxlength="20"> 
Password: <INPUT TYPE = 'TEXT' Name ='password' value="<?PHP print $pword;?>" maxlength="16"> 

<P> 
<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Register"> 


</FORM> 
<P> 

<?PHP print $errorMessage;?> 

    </body> 
    </html> 
+1

我在您的代碼中查看2個查詢。哪一個失敗?另外,你可以迴應查詢嗎? – Tchoupi 2013-03-25 16:41:39

+1

你能迴應查詢並顯示查詢被傳遞給mysql – alwaysLearn 2013-03-25 16:44:57

+0

對不起,你會如何迴應查詢? – 2013-03-25 16:46:57

回答

2

你雙引號的文字:

1套報價也已在所屬smart_quote()功能加入。
1套引號的實際查詢被添加,所以你產區:

INSERT .... VALUES (''$uname'', ''$password''); 

如果你有正確的錯誤處理您的查詢電話,你會看到這樣的:

$result = mysql_query($sql) or die(mysql_error()); 
          ^^^^^^^^^^^^^^^^^^^^^^ 
相關問題