数据库连接脚本适用于PHP 5.3,但不适用于5.5

时间:2017-01-08 07:05:20

标签: php mysql

我几年前为我的帆船俱乐部开发了一个基于网络的会员管理工具,并使用了一些处理数据库连接和数据库操作的免费脚本(一个类)。类(connection.php)由必需文件“settings.php”中的以下代码调用:

$db = new db ( DBUSER, DBPASS, DATABASE, HOSTNAME );

然后在整个站点中用于处理与数据库相关的请求。它在PHP 5.3中运行良好,但由于某些安全问题,该站点必须升级到5.4分钟。不幸的是,PHP 5.4中的脚本无法连接到数据库。我将在下面添加脚本(为了简洁起见,我只在课堂上展示了应该提出这个想法的几个函数):

// ==================================================================
//  The Main Class

class db {

    // ==================================================================
    //  DB Constructor - connects to the server and selects a database

    function db($dbuser, $dbpassword, $dbname, $dbhost)
    {

        $this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);

        if ( ! $this->dbh )
        {
            $this->print_error("<ol><b>Error establishing a database connection!</b><li>Are you sure you have the correct user/password?<li>Are you sure that you have typed the correct hostname?<li>Are you sure that the database server is running?</ol>");
        }


        $this->select($dbname);

    }

    // ==================================================================
    //  Select a DB (if another one needs to be selected)

    function select($db)
    {
        if ( !@mysql_select_db($db,$this->dbh))
        {
            $this->print_error("<ol><b>Error selecting database <u>$db</u>!</b><li>Are you sure it exists?<li>Are you sure there is a valid database connection?</ol>");
        }
    }

当尝试在PHP 5.4中显示页面时,我得到以下输出:

  

dbh = @mysql_connect($ dbhost,$ dbuser,$ dbpassword); if(!$ this-&gt; dbh){$ this-&gt; print_error(“   建立数据库连接时出错!   您确定拥有正确的用户名/密码吗?   您确定已键入正确的主机名吗?   您确定数据库服务器正在运行吗?   “);} $ this-&gt; select($ dbname);} // ================================ ================================== //选择一个DB(如果需要选择另一个)功能选择($ db){if(!@mysql_select_db($ db,$ this-&gt; dbh)){$ this-&gt; print_error(“   选择数据库$ db时出错!   你确定它存在吗?其余的页面   你确定有一个有效的数据库连接吗?

我的目标是在不触及其余页面的情况下重写 db 类。 我试图使用 mysqli 而不是 mysql ,但这没有任何区别。我在我的编程中主要使用过程性的php,并且不善于面向对象。

我的问题是:我应该采取什么方法来解决我的问题。你能把我放到某个方向......

4 个答案:

答案 0 :(得分:0)

自PHP 5.5起,该函数似乎已被弃用

http://php.net/manual/en/function.mysql-connect.php

答案 1 :(得分:0)

如果您在升级到5.4后可以访问php.ini文件,我会检查以确保在Windows扩展程序设置中取消选中您尝试使用的扩展程序。如果您支付托管费用,如果您有足够的耐心,他们的技术支持可能会有所帮助。

答案 2 :(得分:0)

感谢大家的贡献。

我已经确定了包含类connection.php的文件db的一个简单(但主要)问题。它使用了短版本的php标识符:<?而不是<?php,这导致了无法找到类的致命错误。

有了这个方法,我回到原来的弃用函数问题,在php 5.5中无法正常工作,但需要在(最终)提出另一个问题之前做更多的研究。

再次感谢。

答案 3 :(得分:0)

@Qchmqs 1月8日7:28

  

你应该使用PDO

没有!

您应该使用PDO 或MySQLi

请平衡!有很多学识渊博的人在某些情况下提倡MySQLi,这是一个判断问题等。