Подключение к базе данных


Я работаю на веб-приложение, которое я унаследовал от коллеги давно ушли. Для подключения к базе данных MySQL я использую следующие классы:

statement.php

<?php
//class sql
//{
    class Statement
    {
        private $m_connection;

        function __construct($connection)
        {
            $this->m_connection = $connection;
        }

        function query($query)
        {
            $connection = $this->m_connection;
            $handle = $connection->getHandle();

            $result = mysql_query($query,$handle);

            if ($result === FALSE)
                throw new Exception(mysql_error());

            $instance = new Result($this);
            $instance->setHandle($result);

            return $instance;
        }
    }
//}
?>

result.php

<?php
//class sql
//{
    class Result
    {
        private $m_handle;
        private $m_statement;

        function __construct($statement)
        {
            $this->m_statement = $statement;
        }

        function setHandle($handle)
        {   
            $this->m_handle = $handle;
        }

        function fetch()
        {
            $handle = $this->m_handle;          
            $row = mysql_fetch_array($handle);

            return $row;
        }
    }
//}
?>

connection.php

<?php
include_once("statement.php");
include_once("result.php");

//class sql
//{
    class Connection
    {
        private $m_handle;

        function __construct($server,$username,$password)
        {
            $handle = mysql_connect($server,$username,$password);
            $this->m_handle = $handle;
        }

        function __destruct()
        {
            $handle = $this->m_handle;
            @mysql_close($handle);
        }

        function createStatement()
        {
            return new Statement($this);
        }

        function getHandle()
        {
            return $this->m_handle;
        }
    }
//}
?>

named.php

<?php
include_once("connection.php");

function createNamedConnection($name)
{
    if ($name == "dbalias1")
    {
        $connection = new Connection("first.host.com","user","uspw");

        $statement = $connection->createStatement();
        $statement->query("USE db1");

        return $connection;
    }   
    if ($name == "dbalias2")
    {
        $connection = new Connection("second.host.com","user2","nouse");

        $statement = $connection->createStatement();
        $statement->query("USE db2");

        return $connection;
    }

    return null;
}
?>

Для подключения можно использовать следующий скрипт:

$connection = createNamedConnection("dbalias1");
$statement = $connection->createStatement();
$query = "SELECT   *
          FROM     tContent c
          WHERE    c.cID > 100";
$result = $statement->query($query);
while(($row = $result->fetch()) !== FALSE){
    //do something
}

Проблема в том, что те классы, которые причинили мне много неприятностей, и я уверен, что есть работы на них. Я не знаю, с чего начать, чтобы сделать эти занятия более безопасным и простым в использовании.



5534
8
задан 4 февраля 2011 в 01:02 Источник Поделиться
Комментарии
1 ответ

Рекомендуется использовать в mysqli вместо MySQL:

в mysqli

В mysqli ("я" означает "улучшение") более ОО-дружелюбным и имеет более высокий уровень безопасности. Это также выглядит как стандартные функции MySQL являются устаревшими (все-равно какой из них).

4
ответ дан 22 февраля 2011 в 09:02 Источник Поделиться