从请求键的mysqli对象变量(mysqli object variable from reques

2019-10-28 17:03发布

林不知道这是可能的。 这里是我

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

这里是我想要的

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

Answer 1:

为什么需要这么多mysqli对象?

并使用$_RESQUEST在你的代码,以便公开这样可能会导致您的网站很多很多的黑客。

只使用一个( 一个 [1])的mysqli对象。


我建议不要将此但是这是你想要的东西:

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

所以,如果$_REQUEST['db'] == 'abc'这将是这样做的:

$abcsqli->query("SELECT * FROM ...");


Answer 2:

你提的问题是非常适合使用一个单独的工厂模式。 此代码是骨骼,意思是有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 ...");    


文章来源: mysqli object variable from request key