2013-12-14 260 views
-3

我不明白爲什麼這不起作用?它是一個註冊表格,用於檢查字段是否填充,密碼是否與重新輸入的密碼相同,以及是否已經存在於數據庫中。爲什麼不能正常工作? :/

我收到此錯誤:解析錯誤:語法錯誤,意外的T_STRING,期待','或';' in /home/a4550840/public_html/newreg.php on line 32

但是我已經放了';'在第32行......我不明白爲什麼會出現這個錯誤。

任何幫助表示讚賞:)。

編輯:修正了錯誤^並添加了mysql_real_escape_string,但它沒有註冊信息到數據庫出於某種原因?

編輯:它現在:),從查詢拿走了報價

<?php 

include ('connect.php'); 

if ($_POST['submit']) { 

$username = mysql_real_escape_string($_POST['username']); 
$password = mysql_real_escape_string($_POST['password']); 
$repassword = mysql_real_escape_string($_POST['repassword']); 
$email = mysql_real_escape_string($_POST['email']); 

if ($username && $password && $repassword && $email){ 


    if ($password == $repassword) { 

     $check = mysql_query("SELECT * FROM members WHERE username='$username' "); 
     $countrows = mysql_num_rows($check); 

     if ($countrows == 0){ 

      mysql_query("INSERT INTO members ('username','password','email') VALUES  ('$username','$password','$email') "); 

     } else { 

     echo 'Username already exists'; 

     } 

    } else { 

    echo 'Passwords don'\t match'; 
    } 


    } else { 

    echo 'Fill in the fields'; 
    } 

    } else { 

    echo 'Register please'; 

} 

    ?> 
+0

你可以定義「不行」?究竟發生了什麼? – lurker

+0

你有什麼錯誤?另外,你應該仔細考慮如何在SQL中使用不可信變量.http://en.wikipedia.org/wiki/SQL_injection – koosa

+0

是的,我知道sql注入,這只是爲了學習如何創建一個註冊表在php – user3102740

回答

3

您在這裏有一個問題:

echo 'Passwords don't match'; 

你需要花葶單引號:

echo 'Passwords don\'t match'; 

echo "Passwords don't match"; 

注:您的代碼是容易受到SQL注入,你應該使用mysql_real_scape_string()前必須要經過你的參數SQL查詢。

我建議:

$username = mysql_real_scape_string($_POST['username']); 
$password = mysql_real_scape_string($_POST['password']); 
$repassword = mysql_real_scape_string($_POST['repassword']); 
$email = mysql_real_scape_string($_POST['email']); 

提示:當您正在測試(在開發環境)的MySQL querys,你應該在一行的末尾結合die(mysql_error())檢查,如果你有一個像一個問題:

mysql_query('your sql') or die(mysql_error()). 

如果您有錯誤,這會導致您的應用程序死亡顯示mysql錯誤。

+0

哦哇,愚蠢的錯誤男子:P。現在它可以工作,但它不會將信息插入到數據庫中? – user3102740

+0

嘗試更改:INSERT INTO成員('用戶名','密碼','電子郵件')'爲INSERT INTO成員(用戶名,密碼,電子郵件)'你確定你沒有另一個表中的字段應該變得充實? –

+0

另一個提示:當你正在測試** mysql ** querys時,你應該結合'die(mysql_error())'來檢查是什麼問題,例如:mysql_query('你的sql')或死(mysql_error( ))'。如果你有錯誤,這會導致你的應用程序顯示mysql_error。 –

0

請參閱this reference

此錯誤顯示遇到問題的最早時間。問題出現在該行或上一行。在這種情況下,您並未逃避報價,因此解析器在您預期的,;期間發現了字符串的其餘部分。如果你看看你的代碼的顏色,你會更容易看到。正確的行將是

echo 'Passwords don\'t match';