Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在多个数据库连接之间切换_Php_Mysql_Database_Connection - Fatal编程技术网

PHP在多个数据库连接之间切换

PHP在多个数据库连接之间切换,php,mysql,database,connection,Php,Mysql,Database,Connection,我已经创建了php文件来从数据库(db1)加载数据。在不同的位置和设置(如主机、用户、pass和db_name)有10多个独立的数据库。使用相同的php代码,我想切换beetwen数据库(使用1个连接文件) 以下是connection.php: <?php $db_host = "192.152.8.2"; $db_user = "root"; $db_pass = "toor"; $db_name = "db1"; $conn = mysqli_connect($db_host, $d

我已经创建了php文件来从数据库(db1)加载数据。在不同的位置和设置(如主机、用户、pass和db_name)有10多个独立的数据库。使用相同的php代码,我想切换beetwen数据库(使用1个连接文件)

以下是connection.php:

<?php
$db_host = "192.152.8.2";
$db_user = "root";
$db_pass = "toor";
$db_name = "db1";

$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);

if(mysqli_connect_errno()){
    echo 'Database Connection Failed : '.mysqli_connect_error();
}

$db_host2 = "192.152.9.5";
$db_user2 = "root";
$db_pass2 = "rooter";
$db_name2 = "db2";

$conn = mysqli_connect($db_host2, $db_user2, $db_pass2, $db_name2);

if(mysqli_connect_errno()){
    echo 'Database Connection Failed : '.mysqli_connect_error();
}

?>

这是控制器:

<?php

$db = @new MySQLi ("$db_host","$db_user","$db_pass","$db_name");
$db->connect_errno and die('Koneksi database gagal: '.$db->connect_error);

//Query the data

$res = $db->query("SELECT COUNT(*) from student where ipSemId='".$ipSemId."'")
or die($db->error);

?>

什么决定连接到哪个数据库?如果是序数值或唯一字符串,可以使用简单的switch/case语句。php只编码一次,但在访问link1时将加载db1,而在访问link2时将加载db2。这可能吗?通过编程,几乎任何事情都是可能的。你怎么知道链接之间的区别?此外,每次加载页面时都应该调用php,除非它是通过AJAX调用的,在这种情况下,每次执行AJAX时都会调用php。在任何一种情况下,您都应该有一些东西来告诉您要连接到哪个数据库。只需在connect.php中编写一个函数,用一些值调用该函数,告诉它要连接到哪个数据库。看起来您只是尝试连接到任何没有失败的东西,删除连接,而不在主代码中使用它。这看起来有点像是制造麻烦的方法。当然,您知道调用它的页面(链接)以及它应该连接到的数据库。即使您抓取url来获取链接,代码中也需要一些思想和控制构建,以便页面不会连接到错误的数据库。这是一个巨大的安全风险。只需呼叫一次连接。根据主机分配变量<代码>开关($_SERVER['HTTP_HOST']){case'example1.com':$db_user='db1;$db_pass='1';等等break;}$conn=mysqli_connect($db_HOST,$db_user,$db_pass,$db_name)如果这是一次负载平衡尝试,请澄清,这不是本评论的内容。