PHP数据库建议

时间:2014-05-28 16:38:49

标签: php mysql

抱歉由于缺乏有关此问题的信息,我只需要对某些代码提出一些建议。我认为只有程序员可以回答这个问题,因为我的代码是独一无二的,我找不到任何能帮助我的答案。

的index.php

<?php
include ( 'Blue/BlueDatabase.php' );
include ( 'Blue/BlueUsers.php' );

use Blue\BlueDatabase;
use Blue\BlueLoader;

$database = new BlueDatabase();
$database->Connect('localhost', 'root', '', 'database');
?>

现在我有了我的&#34; BlueLoader&#34; class和我在类中都有这个代码

$database = new BlueDatabase();
$database->Connect('localhost', 'root', '', 'database');

我想知道的是。是否值得将代码添加到每个类?它让它看起来不整洁,我认为会有更稳定的方式。我曾经做过之前需要做连接功能吗?是否需要为每个班级完成?我不熟悉php,也不确定某些事情。这个脚本稳定吗? /安全

任何建议或答案都会有所帮助

只是因为你需要我的连接功能(所有我的mysql命令都在像

这样的数组中
//Example:
$commands['mysql_query'] = mysql_query;

final public function connect($sHost, $sUser, $sPass, $sName, $sPort = false, $sType = 'mysql_connect')
{
    if(!$this->connected)
    {
        if ($sPort)
        {
            $sHost = $sHost . ':' . $sPort;
        }
        $this->connection = $this->_aCmd[$sType]($sHost, $sUser, $sPass);

        if($this->connection)
        {
            $mydatabase = $this->_aCmd['mysql_select_db']($sName, $this->connection);

            if($mydatabase)
            {
                $this->connected = true;
            }
            else
            {
                die('could not connect to database');
            }
        }
        else
        {
            die('could not connect to host');
        }
    }
}

2 个答案:

答案 0 :(得分:2)

建议:

  • Stop using the deprecated ext/mysql extension。不要试图将其包装在OO框架中。

  • 使用PDO,因为它已经具有良好的OO使用率,并且具有ext / mysql没有的其他一些功能。 Mysqli是亚军,但我发现PDO更容易使用。

  • 不要在每个使用数据库的类中打开新连接。创建一个连接并将连接对象传递给每个这样的类,可能作为构造函数参数。

  • 另一种方法是使用Registry class来存储&#34;全球&#34;像数据库连接这样的对象。

答案 1 :(得分:0)

全球很棒!它们非常适合表明您采用次优方法,并且需要退后一步并重新评估。

以下是一些解决问题的方法。

$dbh = new DatabaseObject($connection_info);

$foo = new Object1($dbh);

$bar = new Object2();
$bar->GiveDbh($dbh);

$baz = new RegistryObject();
$baz->register('dbh', $dbh);
$bom = new Object3($baz);

我还包括一个Singleton方法,但每次我都会对我大喊大叫。 :/

此外,您可能应该重新启动数据库类以停止使用mysql_*函数。 Yadda yadda PDO MySQLi,你知道这个演习。