【发布时间】:2016-04-09 10:04:57
【问题描述】:
致命错误:未捕获错误:调用 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....
【问题讨论】:
-
如果你连接到
mysqli_(我怀疑你是),你不能混合mysql_函数。这些不同的 API 不会混合使用。 -
作为 escape_string 函数的替代方案,您应该使用准备好的/参数化的查询,将参数绑定到查询而不是转义它们并直接插入它们。 php.net/manual/en/mysqli-stmt.bind-param.php
-
Fred 谢谢各位...我使用了很多 mysql 功能,但我在 mysqli 上遇到了问题...您能告诉我一些让我做出如此大改变的小技巧吗 :)跨度>