javascript - 使用 PHP : Fatal error: Uncaught Error: Call to undefined function mysql_connect() 创建登录页面

标签 javascript php html mysql

我正在使用 PHP、HTML 和 JavaScript 创建登录页面。我创建了一个 MySQL 数据库 myDB和一张 table platform_admins包含可以访问平台的用户。
但是,一旦我单击登录按钮,我就会收到此错误:

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /opt/lampp/htdocs/WebPlatform/include/DatabaseConector.php:28 Stack trace: #0 /opt/lampp/htdocs/WebPlatform/include/DatabaseConector.php(57): DatabaseConector::ConectToDatabase() #1 /opt/lampp/htdocs/WebPlatform/include/User.php(40): DatabaseConector::ExecuteQuery('SELECT id FROM ...') #2 /opt/lampp/htdocs/WebPlatform/login.php(14): User::checkLogin('user', '1a1dc91c907325c...') #3 /opt/lampp/htdocs/WebPlatform/pages.php(22): include('/opt/lampp/htdo...') #4 /opt/lampp/htdocs/WebPlatform/index.php(8): include('/opt/lampp/htdo...') #5 {main} thrown in /opt/lampp/htdocs/WebPlatform/include/DatabaseConector.php on line 28



错误表明函数 mysql_connect()未定义,但据我了解它是 built-in function in PHP .我不知道如何解决这个错误。

更新:

我全部替换mysql_*通过 mysqli_*现在我收到了这些警告。似乎我无法连接到数据库:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /opt/lampp/htdocs/WebPlatform/include/User.php on line 42 Warning: session_destroy(): Trying to destroy uninitialized session in /opt/lampp/htdocs/WebPlatform/login.php on line 30



登录.php
<?php
    @session_start();
    $error = 0;
    if (isset($_POST["user"]) && isset($_POST["pass"])) {

        include_once 'include/User.php';

        $user = $_POST['user'];
        $pass = $_POST['pass'];

        $error = 0;

        $user = User::checkLogin($user, md5($pass));

        if(!is_object($user) && $user == 0){
            $error = 1;
            session_destroy();
        }

        if($error == 0){
            $_SESSION['loged'] = 1;
            $login = TRUE;
            $_SESSION['userid'] = $user->id;
            $_SESSION['username'] = $user->name." ".$user->surename;
            header("Location: index.php?pagina=1");
        }
        else{
            $error = 1;
            session_destroy();
        }
    }
?>
<div class="form_login">

    <form action="index.php?pagina=0" method="POST">
        <div class="form_login_line">
            <div class="form_login_txt">
                Username:
            </div>
            <div class="form_login_input">
                <input type="text" name="user" size="15" value="user"/>
            </div>
        </div>
        <div class="form_login_line">
            <div class="form_login_txt">
                Password:
            </div>
            <div class="form_login_input">
                <input type="password" name="pass" id="pass" size="15" value="pass"/>
            </div>
        </div>
        <div class="form_login_line">
            <div class="form_login_submit">
                <input id="input_login_error" type="button" value="Login" onclick="submitForm()"/>
            </div>
        </div>
    </form>

    <div id="login_error">The username or password are incorrect or don't have access permissions.</div>

</div>
<?php if($error == 1): ?>
    <script>$("#login_error").show();</script>
<?php endif;?>
<script>
    page_name("Login");

    function submitForm(){
        //$("#pass").val(sha1($("#pass").val()));
        $('form').prepend('<input type="submit" id="submit5548" style="display: none"/>');
        $("#submit5548").click();
    }
</script>

用户.php
<?php   
    if (!function_exists("my_autoload"))
    {
        function my_autoload($class_name) {    
            require_once "include/$class_name.php";
        }
    }
    spl_autoload_register('my_autoload');

    class User {
        public $username;
        public $name;
        public $surename;
        public $email;
        public $id;

        function __construct($id = -1) {
            if($id != -1) {
                $query = "SELECT * FROM platform_admins WHERE id = $id";
                $res = DatabaseConector::ExecuteQuery($query);
                while($row = mysql_fetch_array($res)){
                    $this->id = $row['id'];
                    $this->username = $row['username'];
                    $this->name = $row['name'];
                    $this->surname = $row['surename'];
                    $this->email = $row['email'];
                }
            }
        }

        /**
         * 
         * Check the users exist into Database.
         * @param unknown_type $user User
         * @param unknown_type $pass Encrypted Password
         * @return User object or 0 if don't exist
         */
        static function checkLogin($user, $pass){
            $query = "SELECT id FROM platform_admins WHERE username LIKE '$user' AND pass LIKE '$pass'";
            $res = DatabaseConector::ExecuteQuery($query);
            $return = 0;
            while ($row = mysql_fetch_array($res)){
                $return = new User($row['id']);
            }
            return $return;
        }

        public function serialize(){
            return Tools::SerializeAndEncode($this);
        }

    }

?>

数据库连接器.php
<?php
    if (!function_exists("__autoload"))
    {
        function __autoload($class_name){
            require_once 'include/'. $class_name . '.php';
        }
    }

    /**
     * 
     * Connector to Database
     *
     */
    class DatabaseConector {

        /**
         * 
         * Connect to database
         * @return Conection
         */
        private static function ConectToDatabase(){
            $dbhost = Config::$DBhost;
            $dbname = Config::$DBname;
            $dbuser = Config::$DBuser;
            $dbpass = Config::$DBpass;
            $db = new DatabaseConector();
            $con = @mysql_connect($dbhost,$dbuser,$dbpass);
            @mysql_select_db($dbname,$con);
            if(mysql_errno($con))
            {
                Firelog::showError("Error to BDD conect: ".mysql_error($con));
            }
            return $con;
        }

        /**
         * 
         * Diconect to databae
         * @param unknown_type $con Connection
         */
        private static function DisconectDatabase($con){
            @mysql_close($con);
        }

        /**
         * 
         * Execute query in bdd
         * @param unknown_type $query String with query
         * @return Result of the execute query
         */
        public static function ExecuteQuery($query){
            if($query == ""){
                Firelog::showError("The query is empty");
                return null;
            }
            $con = DatabaseConector::ConectToDatabase();

            if(Tools::startsWith($query, "INSERT") || Tools::startsWith($query, "UPDATE") || Tools::startsWith($query, "DELETE"))
                Firelog::showWarn("  --  [QUERY]: ".$query);
            else
                Firelog::showLog("  --  [QUERY]: ".$query);

            $res = @mysql_query($query,$con);
            if(mysql_errno($con))
            {
                Firelog::showError("Error to BDD conect: ".mysql_error($con));
            }
            DatabaseConector::DisconectDatabase($con);
            return $res;
        }



    }

连接数据库.php
<?php

    $urldb = "localhost";
    $namedb = "myDB";
    $userdb = "root";
    $passdb = "123";


    function connectDB()
    {
        global $urldb, $namedb, $userdb, $passdb;
        $condb = mysql_connect($urldb, $userdb, $passdb);
        mysql_select_db($namedb, $condb);
        return $condb;
    }


    function closeDB($condb)
    {
        mysql_close($condb);
    }


    function ejecutar_query($sql)
    {
        $condb = connectDB();
        $res = mysql_query($sql);
        closeDB($condb);
        return $res;
    }


    function ejecutar_query_id($sql)
    {
        $condb = connectDB();
        mysql_query($sql);
        $id = mysql_insert_id($condb);
        closeDB($condb);
        return $id;
    }

?>

最佳答案

在较新版本的 PHP (7+) 上,您必须 use mysqli instead .从广义上讲,您可以更改每个 mysql_*函数到 mysqli_*让它工作。例如,mysql_connect();将变为 mysqli_connect();等等。

关于javascript - 使用 PHP : Fatal error: Uncaught Error: Call to undefined function mysql_connect() 创建登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44304426/

相关文章:

javascript - LimeJS 圆形边框

javascript - 导航栏数据切换和数据目标不起作用

php - 如何将两个不同长度的数组相乘?

php - 将 PDO sqlite 查询转换为数组

php - 如何一次调用 'off' 所有事件

javascript - 将 JSON 值加载到各自的 HTML 元素中

javascript - 如何从 asp.net 中的 javascript 访问 C# 数组

javascript - 无法更改 KineticJS 5.0.1 PixelRatio

javascript - 组件不处理空 prop

javascript - 未捕获的类型错误 : Cannot read property 'setAttribute' of undefined at Object. onLoad