是否可以在PHP中将连接对象转换为数组

时间:2017-12-05 19:58:31

标签: php arrays

我想知道是否可以将数据库连接对象转换为PHP中的数组?我一直在研究,似乎你可以将一个对象转换为数组,但它似乎不适用于连接对象。这是我的剧本:

<?php       

$dbHost="host";
$dbUser="user";
$dbPass="";
$dbName="root";

$dbConn = mysqli_connect($dbHost,$dbUser,$dbPass,$dbName);

$dbParts = (array) $dbConn;

for ($i=0;$i <=3; $i++){

echo $dbParts[$i];

}
?>

任何帮助将不胜感激!

** [编辑] **为什么我需要以数组的形式访问数据库连接是因为我需要能够根据我连接的数据库调用脚本中的某些URL,因为每个数据库都是环境有不同的数据库。

2 个答案:

答案 0 :(得分:2)

构建自己的数组:

$db['localhost'] = array('host' => 'localhost',
                         'user' => 'root',
                         'pass' => '****',
                         'name' => 'database1'); 

然后,如果需要,添加连接:

$db['localhost']['conn'] = mysqli_connect($db['localhost']['host'],
                                          $db['localhost']['user'],
                                          $db['localhost']['pass'],
                                          $db['localhost']['name']);

其他可能性取决于您的需求;将数据库定义为查找键:

$db['database1'] = array('host' => 'localhost',
                         'user' => 'root',
                         'pass' => '****',
                         'name' => 'database1'); 

或定义环境:

$db['production'] = array('host' => 'localhost',
                          'user' => 'root',
                          'pass' => '****',
                          'name' => 'database1'); 

答案 1 :(得分:0)

经过一番挖掘后我发现了这个(经过测试)。 它依赖于您可以访问$ dbConn。

您可以使用类似......

之类的内容来获取正在使用的数据库名称
$result=mysqli_query($dbConn,'SELECT DATABASE() as dbName');
$rows = mysqli_fetch_assoc($result);
var_dump($rows);

你可能会变成一个功能,使其有用......

function getDatabaseName($databaseConnection){
    $result=mysqli_query($databaseConnection,'SELECT DATABASE() as dbName');
    $row = mysqli_fetch_assoc($result);
    return $row['dbName'];
//    var_dump($rows);
}

$currentDatabase = getDatabaseName($dbConn);
echo $currentDatabase;

你必须玩这个以适应......