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 数据库中的记录作为值创建复选框

php mysql jquery ajax 查询数据库三级联动

当数组mysql查询中的复选框值时检查php表单?

jQuery + PHP + MySQL:用 2 个表格拖动 'n' Drop

当从 MySQL 数据库动态加载元素时,在 PHP 中连接 2 个 JSON 数组