2015-08-21 179 views
-1

我試過一切我可以修復代碼的鏈接,但我試過的一切給了我一個白色屏幕我知道這行代碼是唯一的代碼是唯一的一個語法錯誤和其餘的代碼是100%罰款。我正在嘗試使用$ _POST插入名稱,電子郵件,密碼以及使用md5哈希處理密碼。PHP/MySQL插入數據庫不工作

$鏈接=連接到MySQL數據庫

$query="INSERT INTO 'users' ('name', 'email', 'password') 
VALUES(
'".mysqli_real_escape_string($link, $_POST['name'])"', 
'".mysqli_real_escape_string($link, $_POST['email'])."', 
'".md5(md5($_POST['email']).$_POST['password'])."')"; 
+0

'md5()'不安全。 – SuperDJ

+0

什麼是最安全的? – m17

+0

一開始就是'hash('sha512',$ password)',但更好的是http://php.net/manual/en/function.password-hash.php。當然你可以用'md5()'在通過其他人之前散列密碼 – SuperDJ

回答

0

你爲什麼不讓它簡單呢?例如:

$name = mysqli_real_escape_string($link, $_POST['name']); 
$mail = mysqli_real_escape_string($link, $_POST['email']); 
$pass = md5(md5($_POST['email']).$_POST['password']); 

$query="INSERT INTO `users` (`name`, `email`, `password`) VALUES('$name','$mail', '$pass')"; 
0

你錯過了一個點:

$query="INSERT INTO users (name, email, password) 
     VALUES('" . mysqli_real_escape_string($link, $_POST['name']) . "', '" . mysqli_real_escape_string($link, $_POST['email']) . "', '" . md5(md5($_POST['email']) . $_POST['password']) . "')"; 
+0

nope不起作用 – m17

+0

錯誤是什麼? – Berriel

+0

解析錯誤:語法錯誤,意外的T_ELSE,期待','或';'在/home/sites/testdomain.io/html/index中。php on line 30 – m17

0
query="INSERT INTO `users` (`name`, `email`, `password`) 
    VALUES(
    '".mysqli_real_escape_string($link, $_POST['name'])"', 
    '".mysqli_real_escape_string($link, $_POST['email'])."', 
    '".md5(md5($_POST['email']).$_POST['password'])."')"; 
0

嘗試以下方法:周圍表

$name = mysqli_real_escape_string($link, $_POST['name']); 
$email = mysqli_real_escape_string($link, $_POST['email']); 
$password = hash('sha512', md5(md5($_POST['email']).$_POST['password'])); 

$query = "INSERT INTO `users` (`name`, `email`, `password`) VALUES('$name','$email', '$password')"; 

注意反引號和列名稱。另外,請注意呼應以下區別:

echo 'hashed: '.hash('sha512', md5(md5($_POST['email']).$_POST['password'])).'<br>md5(): '.md5(md5($_POST['email']).$_POST['password']); 
0

在VALUES()的第一行中,您錯過了一個點。

錯誤:

'".mysqli_real_escape_string($link, $_POST['name'])"', 

正確:

'".mysqli_real_escape_string($link, $_POST['name'])."', 
0

這裏是你的語句可以如何看作爲一個事先準備好的聲明粗糙的(未經測試)樣品。

$stmt = mysqli_prepare($link, 
"INSERT INTO `users` (`name`, `email`, `password`) VALUES (?, ?, ?)"); 
mysqli_stmt_bind_param($stmt, 'sss', $_POST['name'], $_POST['email'], md5(md5($_POST['email']).$_POST['password'])); 
//mysqli_stmt_execute($stmt); //<--to execute query, use where you execute 

這是手冊的參考,http://php.net/manual/en/mysqli-stmt.bind-param.php