使用登录时出现"Call to undefined function mysql_query()"错误

12

当我执行下面的PHP代码时,我遇到了致命错误,不确定如何解决。

感谢您的帮助

错误信息

PHP致命错误:在/Applications/MAMP/htdocs/lprapp/config.php的第23行中抛出未捕获的错误:调用未定义的函数mysql_query() 堆栈跟踪:#0 {main} 扔在/Applications/MAMP/htdocs/lprapp/config.php的第23行中

代码

    <?php

    $user = 'root';
    $password = 'root';
    $db = 'inventory';
    $host = 'localhost';
    $port = 8888;

    $link = mysqli_init();
    $success = mysqli_real_connect(
       $link,
       $host,
       $user,
       $password,
       $db,
       $port
    );

    ?>
    <?php
    $username = $_POST['username'];
    $password = $_POST['password'];
    $sql = mysql_query("SELECT * FROM login WHERE username = '".$_POST['username']."' and password = '".md5($_POST['password'])."'");
    $row = mysql_num_rows($sql);
    if($rom > 0 )
    {
      session_start();
      $_SESSION['username'] = $_POST['username'];
      $_SESSION['password'] = $_POST['password'];
      echo "login done";
    }else {
      echo "fail login ";
    }

    ?>

3
强制建议:不要使用mysql。至少升级到mysqli。您所在的环境可能已经在使用mysqli,这就是出现错误的原因。 - Carcigenicate
1
你不能混合使用mysqli_和mysql_ API。 - Jonnix
@JonStirling 哦,你说得对。我错过了他代码的上半部分。 - Carcigenicate
谢谢,Carcigenicate。 - user6771006
“Call to undefined function mysql_query()” 我猜您正在运行 PHP 7,其中“mysql_”扩展不仅已被弃用,而且已完全删除。 - CD001
mysql_*mysqli_*。欢迎来到2016年。 - Kevin Kopf
4个回答

29

你正在混淆使用mysql和mysqli。

请更改以下这些行:

$sql = mysql_query("SELECT * FROM login WHERE username = '".$_POST['username']."' and password = '".md5($_POST['password'])."'");
$row = mysql_num_rows($sql);

$sql = mysqli_query($success, "SELECT * FROM login WHERE username = '".$_POST['username']."' and password = '".md5($_POST['password'])."'");
$row = mysqli_num_rows($sql);

5
请注意,这段代码容易受到SQL注入攻击,任何人都可以查看和修改您的数据库。请不要仅仅更改API,而是考虑使用预处理语句。请参阅如何在PHP中防止SQL注入? 以了解如何使用预处理语句来防止SQL注入。 - Ivar

1

你正在混用已废弃的 mysql 扩展和 mysqli

尝试使用以下内容:

$sql = mysqli_query($success, "SELECT * FROM login WHERE username = '".$_POST['username']."' and password = '".md5($_POST['password'])."'");
$row = mysqli_num_rows($sql);

0

0

我建议您开始使用mysqli_(),停止使用mysql_()

请查看以下页面:LINK

警告 此扩展在PHP 5.5.0中已弃用,并在PHP 7.0.0中删除。应改用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关FAQ。此函数的替代方法包括: mysqli_affected_rows() PDOStatement :: rowCount()

尝试使用mysqli_()PDO


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接