Переменная объекта mysqli из ключа запроса - PullRequest
0 голосов
/ 03 ноября 2011

Я не уверен, возможно ли это. вот что у меня есть

if ($_REQUEST[db]=="abcd"){   
    $result =$abcdsqli->query("SELECT * FROM ...");
}elseif ($_REQUEST[db]=="efgh"){   
    $result =$efghsqli-> ...
}

вот что я хочу

$result =$.$_REQUEST[db].sqli->query("SELECT * FROM ...");

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Ваш вопрос идеально подходит для заводского образца с использованием синглтона.Этот код является скелетным, что означает, что существует 0 проверок и т. Д., Но он должен дать вам представление.

class Database
{
    private static $dbos = array();

    public static function getDbo($dboKey)
    {
        if (!isset(self::$dbos[$dboKey])) {

            switch ($dboKey) {
                case 'abcd':
                    $dbo = new mysqli('localhost', 'my_user', 'my_password', 'my_db_1'); 
                    break;

                case 'efgh':
                    $dbo = new new mysqli('localhost', 'my_user', 'my_password', 'my_db_2');
                    break;
            }

            self::$dbos[$dboKey] = $dbo;
        }

        return self::$dbos[$dboKey];
    }        
}

$result = Database::getDbo($_REQUEST[db])->query("SELECT * FROM ...");    
1 голос
/ 03 ноября 2011

Зачем вам нужно столько mysqli объектов?

И использование $_RESQUEST в вашем коде так открыто, как это может привести к множеству взломов на вашем сайте.

Просто используйте один ( один [1]) объект mysqli.


Я советую НЕ ИСПОЛЬЗОВАТЬ ЭТО но это то, что вы хотите:

$sql = "{$_REQUEST['db']}sqli";
$$sql->query("SELECT * FROM ...");

Так что, если $_REQUEST['db'] == 'abc' Это будет делать:

$abcsqli->query("SELECT * FROM ...");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...