2017-04-04 263 views
-3

我爲用戶註冊創建了一個簡單的代碼,當用戶提交數據時沒有記錄到MySQL。用PHP註冊MySQL的用戶註冊

這裏是我的邏輯代碼

<?php 
    $username = $_POST["user"]; 
    $password = $_POST["pass"]; 
    $confirmPassword = $_POST["repass"]; 
    $email = $_POST["email"]; 

    $username = stripcslashes($username); 
    $password = stripcslashes($password); 
    $confirmPassword = stripcslashes($confirmPassword); 
    $email = stripcslashes($email); 

    $con = mysqli_connect('localhost', 'root', '', 'dbtest'); 
    if($con->connect_error) 
    { 
     echo"<script type='text/javascript'>alert('connection to database failed!')</script>"; 
    } 
    else 
    { 
     $query = mysqli_query($con, "INSERT INTO 'user'('Username', 'Password', 'Email') VALUES('$username', $password', '$email')"); 
     echo "You are successfully registered!"; 
    } 
    $con->close(); 
?> 

有什麼事,我錯過了?

+0

你會得到什麼錯誤? - 打開錯誤報告並開始調試。 – Epodax

+1

究竟是什麼問題?代碼是否停在某處,是否會給你一個錯誤?你有沒有試圖調試它? – GiamPy

+0

這是'echo「你成功註冊!」;'工作? – hungrykoala

回答

4

你必須刪除單引號約於列名和表名,因爲MySQL將解釋這些字符串,而不是表/列名

$query = mysqli_query($con, "INSERT INTO `user` (Username, `Password`, Email) VALUES('$username', $password', '$email')"); 

你也應該用準備好的發言,以防止SQL注入。

你應該執行SQL語句(mysqli_error()

Userpassword在MySQL中保留字後索要錯誤。要逃避這些,請使用反引號或更好地重命名錶和列。有關關鍵字的更多信息,請參閱mysql documentation

+0

我'我試圖刪除引號,並且數據仍然沒有記錄到數據庫 –

+0

@AlbertHenderson然後使用反引號 – Jens

+0

我已經改變使用反引號的表名和列,而不是工作太 –

-2

這應該工作,它現在更安全並且您的密碼確認工作。

<?php 
$username  = $_POST["user"]; 
$password  = $_POST["pass"]; 
$confirmPassword = $_POST["repass"]; 
$email   = $_POST["email"]; 

$username  = stripcslashes($username); 
$password  = stripcslashes($password); 
$confirmPassword = stripcslashes($confirmPassword); 
$email   = stripcslashes($email); 

$con = mysqli_connect('localhost', 'root', '', 'dbtest'); 
$query = sprintf("INSERT INTO user ('Username', 'Password', 'Email') VALUES ('%s', '%s', '%s')", $username, $password, $email); 

if($password == $confirmPassword) 
{ 
    $result = mysqli_query($con, $query) 
    if($result) 
    { 
     echo "You are successfully registered!"; 
    } 
    else 
    { 
     echo "Something went wrong."; 
    } 
    $con->close(); 
} 
else 
{ 
    echo "The passwords you entered didn't match."; 
} 

?> 

我用的sprintf(),使查詢與和mysqli_query()檢查它。 它還檢查密碼是否匹配。 關心 - 勞爾。

+0

它不起作用。單個qoutes列周邊名稱 – Jens