【问题标题】:PHP and 2 Databases in mysqlmysql中的PHP和2个数据库
【发布时间】:2014-09-26 14:31:16
【问题描述】:

如何连接 2 个数据库?首先我验证用户,如果用户被授权,那么它将访问主数据库。我这样做是为了安全。谢谢你的回答。

【问题讨论】:

  • 为什么这个解决方案比只有一个数据库更安全?您是否认为第一个数据库不如第二个数据库安全?我认为您不需要 2 个数据库...

标签: mysqli mysql-workbench


【解决方案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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2011-03-18
      • 2016-03-11
      • 2015-03-11
      相关资源
      最近更新 更多