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

标签 php mysql mysqli

所以我写了这个登录系统,但是有一个大问题。每次我尝试在输入的值与代码矛盾时打印 $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
   } 
?>

Read out here

关于php - 如何修复此代码(由于 MySql 已弃用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738929/

相关文章:

php - 使用register_shutdown_function写入文件

php - 如何更改链接的样式表?

mysql - 在 ASP.NET Core 2.0 预览版中使用 Pomelo MySQL EF 提供程序时出错

php - 使用 php ajax 检查用户名和密码

php - 编码为希伯来语 - PHP, mysqli

php - 使用 Mysql 的客户和总计

php password_verify() hash 和 pass 不匹配

javascript - 未捕获的语法错误。输入意外结束

php - 将所有 GET 请求存储在单个变量 PHP 中

mysql - Cron 作业 VS MySql 事件