致命错误:未捕获错误:调用 C:\xampp\htdocs\phoenixproject\register.php:16 中未定义的函数 mysql_escape_string() 堆栈跟踪:#0 {main} 在 C:\xampp\htdocs\phoenixproject\register.php 中抛出在第 16 行
如何解决这个问题?
<?php
require("config.php");
?>
<?php
if(isset($_POST['submit'])){
$email1 = $_POST['email1'];
$email2 = $_POST['email2'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if($email1 == $email2) {
if($pass1 == $pass2) {
//All good. Nastavi broo.
$name = mysql_escape_string($_POST['name']);
$lname = mysql_escape_string($_POST['lname']);
$uname = mysql_escape_string($_POST['uname']);
$email1 = mysql_escape_string($email1);
$email2 = mysql_escape_string($email2);
$pass1 = mysql_escape_string($pass1);
$pass2 = mysql_escape_string($pass2);
mysql_query("INSERT INTO `users` (`id`, `name`, `lname`, `uname`, `email`, `pass`) VALUES (NULL, '$name', '$lname', '$uname', '$email1', '$pass1')") or die (mysql_error());
}else{
echo "Sorry, your password is not corrext.";
exit();
}
}else{
echo "Sorry!";
}
} // brace for submit conditional
$form = <<<EOT
<form action="register.php" method="POST">
First Name: <input type="text" name="name" /></br>
Last Name: <input type="text" name="lname" /></br>
Username: <input type="text" name="uname" /></br>
Email: <input type="text" name="email1" /></br>
Confirm Email: <input type="text" name="email2" /></br>
Password: <input type="password" name="pass1" /></br>
Confirm Password: <input type="password" name="pass2" /></br>
<input type="submit" value="Register" name="submit" />
</form>
EOT;
echo $form;
?>
好吧,我知道我试图混合使用 mysql 和 mysqli ….
原文由 Amar Muratović 发布,翻译遵循 CC BY-SA 4.0 许可协议
在这里为您提供帮助…(评论太长了)
您的
require("config.php");
应包含以下内容:旁注: 为您的主机使用正确的设置。
然后更改您的转义函数以使用它的
mysqli_
版本并将连接参数传递给它:同样,查询也是如此。使用
i
版本并将连接作为第一个参数传递给它。使用
mysqli_error($link);
检查查询中的错误因此,您可以将查询修改为
和做
另请阅读 Stack 上有关 API 混合的以下内容:
mysql_
与mysqli_
或 PDO 等不要混合在一起。从连接到查询,您必须使用同一个。脚注。
密码
我还注意到您可能以纯文本形式存储密码。不建议这样做。如果您打算在某个时候使用此功能,请不要将密码作为纯文本存储在数据库中。
请参阅以下内容。
crypt()
bcrypt()
scrypt()
password_hash()
函数。其他链接: