PHP/MySQL插入数据库不工作

PHP/MySQL插入数据库不工作

问题描述:

我试过一切我可以修复代码的链接,但我试过的一切给了我一个白色屏幕我知道这行代码是唯一的代码是唯一的一个语法错误和其余的代码是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

你为什么不让它简单呢?例如:

$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')"; 

你错过了一个点:

$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

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'])."')"; 

尝试以下方法:周围表

$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']); 

在VALUES()的第一行中,您错过了一个点。

错误:

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

正确:

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

这里是你的语句可以如何看作为一个事先准备好的声明粗糙的(未经测试)样品。

$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