2014-02-24 30 views
-1

我的功能,需要檢查我在使用的電子郵件。如果電子郵件還沒有註冊。代碼將檢查使用的用戶名是否爲 。如果它之前沒有註冊。 它需要啓動INSERT Mysqli_query的處理。 比問題開始,其不顯示任何問題&其檢查電子郵件&用戶名正確, 只有mysqli_query命令,不起作用。Mysqli_query不要插入細節到表

1)爲什麼它不工作? 2)如何使它更安全?

我的代碼:

if(empty($error)){ 
     $sqlcon = mysqli_connect("localhost","baruch","","developers"); 
     $checkemail = mysqli_query($sqlcon,"SELECT `email` FROM `users` WHERE email='$email'"); 
     if(mysqli_num_rows($checkemail)){echo "האימייל".$email.".בשימוש בחרו באימייל אחר.";}else{ 
      $checkusername = mysqli_query($sqlcon,"SELECT `username` FROM `users` WHERE username='$username'"); 
      if(mysqli_num_rows($checkusername)){echo "שם המשתמש: <strong>".$username."</strong> ,נמצא בשימוש ביחרו שם משתמש אחר.";}else{ 
       mysqli_query($sqlcon, "INSERT INTO `users` (`ID`, `fullname`, `username`, `password`, `email`, `birthday`, `tags`, `gold`, `activation`, `avatarurl`) VALUES ('', '$fullname', '$username', MD5('$password'), '$email', '$birthday', '$tags', '0', '0', MD5('".rand()."'), '')"); 
       echo $fullname." נרשמת בהצלחה לאתר, בשם המשתמש:".$username; 
      } 
     } 
     mysqli_close($sqlcon); 
    } 
+0

添加錯誤處理您的數據庫調用。 – jeroen

+0

調試過程如何?更改爲'rand()。'''),'')「)或死(mysqli_error($ sqlcon));' – Fabio

+0

將此添加到腳本的頂部:'mysqli_report(MYSQLI_REPORT_STRICT);' – jeroen

回答

0

你有柱失配誤差,

試試這個,

mysqli_query($sqlcon, "INSERT INTO `users` (`ID`, `fullname`, `username`, `password`, `email`, `birthday`, `tags`, `gold`, `activation`, `avatarurl`) 

VALUES ('', '$fullname', '$username', MD5('$password'), '$email', '$birthday', '$tags', '0', '0', '')"); 
+0

謝謝。我錯誤地在要插入的值處添加1個字節 –

0

mysqli_real_escape_string()所有這些$variables('', '$fullname', '$username', MD5('$password'), '$email', '$birthday', '$tags', '0', '0', MD5('".rand()."'), '')

像:$fullname = mysqli_real_escape_string($connection, $fullname);和這樣...

或者使用prepared statement照顧你的東西。