Javascript MySQL注册连接错误
我在网站上创建的注册选项有问题。对于我的注册选项,我完全遵循了本教程: 它在我的测试网站上起到了很好的作用,但现在我已经将所有内容移动到了另一台服务器上,我收到了两种不同类型的错误消息 第一个: 错误与我的javascript文件中的以下行有关:Javascript MySQL注册连接错误,javascript,php,mysql,json,mysqli,Javascript,Php,Mysql,Json,Mysqli,我在网站上创建的注册选项有问题。对于我的注册选项,我完全遵循了本教程: 它在我的测试网站上起到了很好的作用,但现在我已经将所有内容移动到了另一台服务器上,我收到了两种不同类型的错误消息 第一个: 错误与我的javascript文件中的以下行有关: var responseData = jQuery.parseJSON(data), 这就是Safari、Firefox和Opera告诉我的。然后Chrome也报告了这个错误: 这可能是因为PHP7中删除了mysql函数吗?我的新服务器使用PHP
var responseData = jQuery.parseJSON(data),
这就是Safari、Firefox和Opera告诉我的。然后Chrome也报告了这个错误:
这可能是因为PHP7中删除了mysql函数吗?我的新服务器使用PHP5.6但是…
我的PHP目前看起来是这样的:
<?php
if(isset($_GET['action'])&& $_GET['action'] == 'signup'){
mysql_connect('localhost:3306','db_username','db_password');
mysql_select_db('db_name');
//sanitize data
$email = mysql_real_escape_string($_POST['signup-email']);
//validate email address - check if input was empty
if(empty($email)){
$status = "error";
$message = "You did not enter an email address";
}
else if(!preg_match('/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/', $email)){ //validate email address - check if is a valid email address
$status = "error";
$message = "Invalid email address";
}
else {
$existingSignup = mysql_query("SELECT * FROM signups WHERE signup_email_address='$email'");
if(mysql_num_rows($existingSignup) < 1){
$date = date('Y-m-d');
$time = date('H:i:s');
$insertSignup = mysql_query("INSERT INTO signups (signup_email_address, signup_date, signup_time) VALUES ('$email','$date','$time')");
if($insertSignup){
$status = "success";
$message = "You have been signed up";
}
else {
$status = "error";
$message = "Ooops, there has been a technical error";
}
}
else {
$status = "error";
$message = "This email address has already been registered";
}
}
//return json response
$data = array(
'status' => $status,
'message' => $message
);
echo json_encode($data);
exit;
}
?>
选项1
您的服务器可能有更新版本的PHP(>=7.0.0)。
MySQL扩展在PHP5.5.0中被弃用,在7.0.0中被删除
mysql_*函数被删除的原因是它们是在PHP的早期2.0版本中实现的,这意味着它们已经有15年的历史了。这个库限制了MySQL的功能,并且很难维护
如果您是初学者,我建议您寻找MySQLi或PDO_MySQL库教程,如果您有更多经验,也可以自己移植代码
选项2
另一个可能的原因是php.ini文件中禁用了MySQL扩展。要查看有关当前PHP配置的更多信息,请创建并打开包含以下内容的新PHP文件:
<?php phpinfo(); ?>
mysql函数在5.6版中仍然可用。您可能需要在php.ini文件中启用此扩展名。但是如果你转换成mysqli或PDO会更好。第一个问题是因为第二个问题而发生的。错误所抱怨的“F”实际上是错误消息“致命错误:未捕获错误…”的“F”。这是被发送回的内容,而不是JSON。是的,你应该放弃mysql_*函数,就像一个燃烧着的弃用土豆,转而使用PDO或mysqli。简言之-是的,问题是使用mysql
函数-将数据库代码重写为mysqli
或PDO
可能的重复