致命错误:未捕获的错误:调用C:\xampp\htdocs\phoenixproject\register中未定义的函数mysql_escape_string()。php:16堆栈跟踪:第16行的C:\xampp\htdocs\phoenixproject\register.php中抛出了#0 {main
如何解决这个问题?
<?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....
5条答案
按热度按时间jchrr9hc1#
为了帮你...(太长了,无法评论)
您的
require("config.php");
应包含以下内容:**旁注:**使用适合您主机的正确设置。
然后将转义函数更改为使用
mysqli_
版本,并将连接参数传递给它:同样,对于查询也是如此,使用
i
版本并将其作为第一个参数传递。使用
mysqli_error($link);
检查查询中的错误因此,您可以将查询修改为
并且
另请阅读Stack上关于API混合的以下内容:
mysql_
与mysqli_
或PDO等混用。从连接到查询必须使用相同的。脚注。
密码
我还注意到你可能以纯文本的形式存储密码。这是不推荐的。如果你打算在某个时候使用这个,不要在你的数据库中以纯文本的形式存储密码。
请参考以下内容。
crypt()
bcrypt()
scrypt()
password_hash()
函数。其他链接:
6qqygrtg2#
把你的PHP版本改回PHP5.6,它会工作得很好。
ckocjqey3#
错误消息Call to undefined function mysql_escape_string()表示您的代码中正在使用mysql_escape_string()函数,但尚未定义该函数。该函数是已弃用的MySQL扩展的一部分,在PHP的最新版本中已被删除。您应该使用PDO::quote()方法来转义SQL查询中的特殊字符,而不是使用mysql_escape_string()。下面是一个示例,说明如何更新代码以使用PDO::quote():
wfypjpf44#
最好是将PHP版本降级到5.6,然后一切都会设置好。错误将100%删除。
希望这有帮助!
yzuktlbb5#
我好像不知道你用的是哪个版本的PHP!
如果你的PHP是7.x.x,那么只有一件事要做,只是重命名
$uname = mysqli真实的转义字符串($link,$_POST [“uname”]);
到
$未命名= $_POST [未命名];