青岛网站建设公司好找吗,网络营销企业案例分析,在线商城,加强两微一端和门户网站建设php - 如何在单个网页上连接多个MySQL数据库#xff1f;我将信息分散在几个数据库中#xff0c;并希望使用PHP将所有信息放到一个网页上。 我想知道如何连接到单个PHP网页上的多个数据库。我知道如何使用以下方法连接到单个数据库#xff1a;$dbh mysql_connect($hostname,…php - 如何在单个网页上连接多个MySQL数据库我将信息分散在几个数据库中并希望使用PHP将所有信息放到一个网页上。 我想知道如何连接到单个PHP网页上的多个数据库。我知道如何使用以下方法连接到单个数据库$dbh mysql_connect($hostname, $username, $password)or die(Unable to connect to MySQL);但是我可以使用多个“mysql_connect”命令来打开其他数据库如果我连接了多个数据库那么PHP如何知道我希望从中获取信息的数据库。JoshFinnie asked 2019-04-09T05:23:13Z11个解决方案320 votes您可以多次调用SELECT * FROM database2.tablename但如果参数相同则需要为$new_link(第四个)参数传递true否则将重用相同的连接。 例如$dbh1 mysql_connect($hostname, $username, $password);$dbh2 mysql_connect($hostname, $username, $password, true);mysql_select_db(database1, $dbh1);mysql_select_db(database2, $dbh2);然后查询数据库1传递第一个链接标识符mysql_query(select * from tablename, $dbh1);对于数据库2传递第二个mysql_query(select * from tablename, $dbh2);如果您没有传递链接标识符则使用最后创建的连接(在本例中为SELECT * FROM database2.tablename表示的连接)例如mysql_query(select * from tablename);其他选择如果MySQL用户可以访问两个数据库并且它们位于同一主机上(即两个数据库都可以从同一个连接访问)您可以保持一个连接打开并根据需要调用SELECT * FROM database2.tablename进行交换。 我不确定这是一个干净的解决方案你最终可能会查询错误的数据库。在查询中引用表时指定数据库名称(例如SELECT * FROM database2.tablename)。 实施这可能是一种痛苦。另请阅读troelskn的答案因为如果您能够使用PDO而不是旧的扩展这是一种更好的方法。Tom Haigh answered 2019-04-09T05:24:17Z92 votes如果您使用PHP5(并且您应该因为PHP4已被弃用)您应该使用PDO因为这正逐渐成为新标准。 PDO的一个(非常)重要的好处是它支持绑定参数这使得代码更加安全。您将通过PDO连接如下所示try {$db new PDO(mysql:dbnamedatabasename;host127.0.0.1, username, password);} catch (PDOException $ex) {echo Connection failed: . $ex-getMessage();}(当然替换上面的databasename用户名和密码)然后您可以像这样查询数据库$result $db-query(select * from tablename);foreach ($result as $row) {echo $row[foo] . \n;}或者如果您有变量$stmt $db-prepare(select * from tablename where id :id);$stmt-execute(array(:id 42));$row $stmt-fetch();如果您需要一次打开多个连接您只需创建多个PDO实例try {$db1 new PDO(mysql:dbnamedatabas1;host127.0.0.1, username, password);$db2 new PDO(mysql:dbnamedatabas2;host127.0.0.1, username, password);} catch (PDOException $ex) {echo Connection failed: . $ex-getMessage();}troelskn answered 2019-04-09T05:25:45Z8 votes我让我的生活变得简单CREATE VIEW another_table AS SELECT * FROM another_database.another_table;希望它有用...欢呼......Ihsan Kusasi answered 2019-04-09T05:26:25Z6 votes而不是mysql_connect使用mysqli_connect。mysqli提供了一次连接多个数据库的功能。$Db1 new mysqli($hostname,$username,$password,$db_name1);// this is connection 1 for DB 1$Db2 new mysqli($hostname,$username,$password,$db_name2);// this is connection 2 for DB 2kaushik answered 2019-04-09T05:27:01Z4 votes试试以下代码$conn mysql_connect(hostname,username,password);mysql_select_db(db1,$conn);mysql_select_db(db2,$conn);$query1 SELECT * FROM db1.table;$query2 SELECT * FROM db2.table;您可以从两个数据库中获取上述查询的数据如下所示$rs mysql_query($query1);while($row mysql_fetch_assoc($rs)) {$data1[] $row;}$rs mysql_query($query2);while($row mysql_fetch_assoc($rs)) {$data2[] $row;}print_r($data1);print_r($data2);Paks answered 2019-04-09T05:27:34Z3 votes除非您确实需要使用多个PDO对象实例否则请考虑以下事项$con new PDO(mysql:hostlocalhost, $username, $password,array(PDO::ATTR_PERSISTENT true));请注意构造参数中缺少USE dbname。当您通过终端或其他工具连接到MySQL时不需要数据库名称。 您可以通过PDO::exec()方法使用USE dbname语句在数据库之间切换。$con-exec(USE someDatabase);$con-exec(USE anotherDatabase);当然您可能希望将其包装在catch try语句中。Michael Ratcliffe answered 2019-04-09T05:28:37Z2 votes您可以使用MySQLi语法这样可以更好地处理它。定义数据库连接然后每当要查询其中一个数据库时请指定正确的连接。例如。$Db1 new mysqli($DB_HOST,USERNAME,PASSWORD); // 1st database connection$Db2 new mysqli($DB_HOST,USERNAME,PASSWORD); // 2nd database connection然后在同一页面上查询它们使用类似于$query $Db1-query(select * from tablename)$query2 $Db2-query(select * from tablename)die($Db1-error);以这种方式更改为MySQLi将对您有所帮助。user3857891 answered 2019-04-09T05:29:44Z2 votes$dbh1 mysql_connect($hostname, $username, $password);$dbh2 mysql_connect($hostname, $username, $password, true);mysql_select_db(database1, $dbh1);mysql_select_db(database2,$dbh2);mysql_query(select * from tablename, $dbh1);mysql_query(select * from tablename, $dbh2);这是我使用的最明显的解决方案但请记住如果数据库的用户名/密码在同一主机中完全相同则此解决方案将始终使用第一个连接。 因此不要混淆在这种情况下这不起作用。 您需要做的是为2个数据库创建2个不同的用户它将起作用。Lazy Fellow answered 2019-04-09T05:30:14Z2 votes您实际上并不需要select_db.您可以同时向两个数据库发送查询。 首先授予DB1以从GRANT select ON DB2.* TO DB1localhost;选择DB2。然后FLUSH PRIVILEGES;。最后您可以进行“多数据库查询”如SELECT DB1.TABLE1.id, DB2.TABLE1.username FROM DB1,DB2等。(不要忘记您需要root访问权限才能使用grant 命令)Nagibaba answered 2019-04-09T05:30:54Z1 votes如果你使用mysqli并有两个db_connection文件。 喜欢第一个是define(HOST,localhost);define(USER,user);define(PASS,passs);define(**DB1**,database_name1);$connMitra new mysqli(HOST, USER, PASS, **DB1**);第二个是define(HOST,localhost);define(USER,user);define(PASS,passs);define(**DB2**,database_name1);$connMitra new mysqli(HOST, USER, PASS, **DB2**);所以只需更改mysqli中的参数传递名称如DB1和DB2。 如果你在mysqli中传递相同的参数假设两个文件中的DB1则第二个数据库将不再连接。 所以请记住在mysqli函数中使用两个或多个连接传递不同的参数名称时lotus weaver answered 2019-04-09T05:31:41Z-1 votes我在laravel完成了这个ini_set(max_execution_time, 3600);$old_users DB::connection(mysql2)-table(user_master)-get();foreach ($old_users as $old_user) {if ($old_user-usr_phone ! 0) {$password base64_decode($old_user-usr_pwd);$password Hash::make($password);if ($old_user-device_type 1) {$device_type ios;} else if ($old_user-device_type 2) {$device_type android;} else {$device_type web;}$user new User;$user-name $old_user-usr_name;$user-email $old_user-usr_email;$user-points_exp_date 2018-08-02; try {$user-save();} catch (\Exception $e) {echo ();}Log::info(user saved);}}这是我的示例代码Balaji Rajendran answered 2019-04-09T05:32:33Z