mysql中的PHP和2个数据库
Posted
技术标签:
【中文标题】mysql中的PHP和2个数据库【英文标题】:PHP and 2 Databases in mysql 【发布时间】:2014-09-26 14:31:16 【问题描述】:如何连接 2 个数据库?首先我验证用户,如果用户被授权,那么它将访问主数据库。我这样做是为了安全。谢谢你的回答。
【问题讨论】:
为什么这个解决方案比只有一个数据库更安全?您是否认为第一个数据库不如第二个数据库安全?我认为您不需要 2 个数据库... 【参考方案1】:是的,您可以创建两个到 mysql 的连接,使用不同的变量进行连接
<?php
$con1 = mysqli_connect("db1server","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
echo "Failed to connect to MySQL: " . mysqli_connect_error();
$con2 = mysqli_connect("db2server","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
echo "Failed to connect to MySQL: " . mysqli_connect_error();
?>
并在所需的服务器上运行查询
【讨论】:
我有一个数据库,其中有一个带有 id 的客户表,但我需要在用户登录时首先检查客户是否在 bd 中。如果是,请访问第二个数据库,您可以在其中验证您的密码和其他表中所需的其他数据。【参考方案2】:您可以访问任意数量的数据库
例如。
$dbcon1= mysqli_connect(host,username,password,dbname1);
$dbcon2=mysqli_connect(host,username,password,dbname2);
当您使用多个数据库时要注意的重要事项确保您关闭(mysqli_close(dbconnection))数据库, 在访问其他数据库之前作为一种良好做法
【讨论】:
【参考方案3】:你应该检查函数mysqli::select_db/mysqli_select_db。
这是一个例子:
面向对象的风格
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
/* check connection */
if (mysqli_connect_errno())
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
/* return name of current default database */
if ($result = $mysqli->query("SELECT DATABASE()"))
$row = $result->fetch_row();
printf("Default database is %s.\n", $row[0]);
$result->close();
/* change db to world db */
$mysqli->select_db("world");
/* return name of current default database */
if ($result = $mysqli->query("SELECT DATABASE()"))
$row = $result->fetch_row();
printf("Default database is %s.\n", $row[0]);
$result->close();
$mysqli->close();
?>
程序风格
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
/* check connection */
if (mysqli_connect_errno())
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
/* return name of current default database */
if ($result = mysqli_query($link, "SELECT DATABASE()"))
$row = mysqli_fetch_row($result);
printf("Default database is %s.\n", $row[0]);
mysqli_free_result($result);
/* change db to world db */
mysqli_select_db($link, "world");
/* return name of current default database */
if ($result = mysqli_query($link, "SELECT DATABASE()"))
$row = mysqli_fetch_row($result);
printf("Default database is %s.\n", $row[0]);
mysqli_free_result($result);
mysqli_close($link);
?>
上面的例子会输出:
Default database is test.
Default database is world.
【讨论】:
以上是关于mysql中的PHP和2个数据库的主要内容,如果未能解决你的问题,请参考以下文章
PHP - 使用 MySQL 数据库中的记录作为值创建复选框
php mysql jquery ajax 查询数据库三级联动