如何修复此代码(由于MySql已弃用)


How do I fix this code (due to MySql deprecated)

所以我写了这个登录系统,但有一个大问题。每当我试图在输入的值与代码矛盾时打印$errors时,它都不起作用。这是用户登录代码

<?php
if (empty($_POST) === false) {
    $username = $_POST['username'];
    $password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
        $errors[] = 'Fill out this field!';
    } else if (user_exists($username) === false) {
        $errors[] = 'Are you sure you''ve registered?';
    } else if (user_active($username) === false) {
        $errors[] = 'you haven''t activated your account!';
    } else {
    //Login com.
   }
print_r($errors);
}
?>

所以我认为这里没有任何问题。我怀疑问题就在这里。这是通用文件:

<?php
function sanitize($data) {
return mysqli_real_escape_string($data);
}
?>

这是用户代码:

<?php
function user_active($username, $con){ 
    $username = sanitize($username, $con);
    $q = "SELECT COUNT(`user_id`)
      FROM `users`
      WHERE `username` = '{$username}'
      AND `active` = 1";
 if($query = mysqli_query($con, $q)){
     return (mysqli_num_rows($query) > 0) ? true : false;
  } else {
     //TODO: Replace in production
      trigger_error('<p>Query ' . mysqli_error($con) . '</p>');
    }
}
  ?>

这是连接代码:

<?php
$con = mysqli_connect('localhost', 'root', '') or die(mysql_error());
mysqli_select_db($con, 'users');
?>

我知道MySql已被弃用,所以我转换为MySqli,但由于代码不断矛盾,它只会引起更多问题。如有任何帮助,我们将不胜感激。非常感谢。

这样修改,

<?php
   function sanitize($data, $con) { //$con parameter added
     return mysqli_real_escape_string($con, $data); //$con parameter added
   } 
?>

在此处阅读