我几年前为我的帆船俱乐部开发了一个基于网络的会员管理工具,并使用了一些处理数据库连接和数据库操作的免费脚本(一个类)。类(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,并且不善于面向对象。
我的问题是:我应该采取什么方法来解决我的问题。你能把我放到某个方向......
答案 0 :(得分:0)
自PHP 5.5起,该函数似乎已被弃用
答案 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,这是一个判断问题等。