致命错误:未捕获错误:在C:\ xampp \ htdocs \ phoenixproject \ register.php中调用未定义函数mysql_escape_string():16堆栈跟踪:#0 {main}抛出C:\ xampp \ htdocs \ phoenixproject \第16行的register.php
如何解决这个问题?
<?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 ....
答案 0 :(得分:9)
在这里帮助你......(评论太久了)
您的require("config.php");
应包含以下内容:
旁注:使用适合您主机的设置。
$link = mysqli_connect("localhost", "username", "mpassword", "database") or die($link);
然后更改您的转义函数以使用它的mysqli_
版本并将连接参数传递给它:
$name = mysqli_real_escape_string($link, $_POST['name']);
$lname = mysqli_real_escape_string($link, $_POST['lname']);
$uname = mysqli_real_escape_string($link, $_POST['uname']);
$email1 = mysqli_real_escape_string($link, $email1);
$email2 = mysqli_real_escape_string($link, $email2);
$pass1 = mysqli_real_escape_string($link, $pass1);
$pass2 = mysqli_real_escape_string($link, $pass2);
同样,查询也是如此。使用i
版本并将连接作为第一个参数传递给它。
mysqli_query($link, "INSERT INTO ...
使用mysqli_error($link);
因此您可以将查询修改为
$query = mysqli_query($link, "INSERT INTO ...
并且正在做
if(!$query){
echo "Error: " . mysqli_error($link);
}
关于API混合,请阅读Stack上的以下内容:
mysql_
与mysqli_
或PDO等不会混合在一起。您必须使用相同的连接到查询。脚注。
<强>密码强>
我还注意到您可能以纯文本格式存储密码。不建议这样做。如果您打算在某些时候使用它,请不要将密码作为纯文本存储在数据库中。
请参阅以下内容。
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
答案 1 :(得分:2)
将您的PHP版本更改回PHP 5.6,它将正常工作。
答案 2 :(得分:2)
最好将PHP版本降级到5.6,并且所有版本都将设置。错误将100%删除。
希望这有帮助!
答案 3 :(得分:-1)
似乎我不知道你正在使用哪个版本的PHP!
如果你的PHP是7.x.x,那么只有一件事就是重命名
$ uname = mysqli_real_escape_string($ link,$ _POST ['uname']);
到
$ uname = $ _POST ['uname'];