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'])."')";
答
你为什么不让它简单呢?例如:
$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']) . "')";
答
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。
'md5()'不安全。 – SuperDJ
什么是最安全的? – m17
一开始就是'hash('sha512',$ password)',但更好的是http://php.net/manual/en/function.password-hash.php。当然你可以用'md5()'在通过其他人之前散列密码 – SuperDJ