根据下拉选择,使用PHP / MySQL更改数据库

时间:2018-10-09 16:19:42

标签: php mysql

我目前有几个具有相同表的数据库(人员,业务,团体,申诉等)。我有一个应用程序,可让您查看饼图和数据图以及在每个表中编辑值。应用程序使用的数据在每个数据库中都可用,但是每个数据库还具有其自身唯一的字段,而在其他数据库中找不到。

由于应用程序完全相同,因此我想将它们组合为一个应用程序,并允许用户(调查员)选择他们连接的数据库,并在应用程序的所有页面上查看该数据库的数据。 / p>

这可能吗?我可以在index.php中有一个下拉列表来更新db.php中的数据库连接,以便每个需要db.php的页面都显示在index.php页面中选择的数据库的数据吗?

db.php

<?php
header('Content-type: text/html; charset=UTF-8');
// host name, username, password, database
$con = mysqli_connect("localhost","root","","golddb");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  exit();
  }

  // Change character set to utf8
  if (!mysqli_set_charset($con, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($con));
    exit();
} else {

}
?>

index.php

<?php
//include auth.php file on all secure pages
include("auth.php");
require("db.php");
?>
...
<!-- Page header with links to Dashboard & Map -->
    <header id="page-content-header">
        <div class="row">
            <!-- Use element to open sidenav -->
            <div class="col-xs-10">
                <span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span>
            </div>

        </div>
        <div class="row" id="main1">
            <div style="float: left;">
            <h3><strong>Mining:</strong> Gold Mine</h3>
            </div>
            <form action="#" method="post">
                <!-- Select project Bar -->
                <div style="float: right; width: 20%;">
                    <p>
                        Project
                        <select name="db_connection">
                            <option value="golddb">gold</option>
                            <option value="tutorial">tutorial</option>
                        </select>
                        <input type="submit" name="submit" value="Get Selected Values" />
                    </p>
                </div>
            </form>
            <?php
                if(isset($_POST['submit'])){
                $selected_val = $_POST['db_connection'];  // Storing Selected Value In Variable
                // Change database to the selected value (selected_val)
                mysqli_select_db($con,$selected_val);
                }
            ?>
        </div>
    </header>

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我非常确定您的代码可以正常工作,但是由于您不尝试在mysqli_select_db($con,$selected_val);之后发出任何请求,因此没有区别。

但是也许您想要的是从一开始就对其进行更改,在这种情况下,db.php中您可以尝试:

// host name, username, password, database
if(isset($_POST['db_connection']))$selected_val = $_POST['db_connection'];
else $selected_val='golddb';
$con = mysqli_connect("localhost","root","",$selected_val);

更安全的方法是使用开关盒而不是用户发送的数据:

if(isset($_POST['db_connection'])){
  switch ($_POST['db_connection']) {
    case 'tutorial':
        $selected_val='tutorial';
        break;
    default:
        $selected_val='golddb';
        break;
  }
}
else $selected_val='golddb';
$con = mysqli_connect("localhost","root","",$selected_val);

如果您希望同时使用旧的连接(对于具有认证数据的通用数据库,用户不应该看到的),也可以将$con重命名为$con_selected新的。