基于下拉选择的php/mysql数据库更改

vlju58qv  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(350)

我目前有多个数据库具有相同的表(人员、约定、组、申诉等)。我有一个应用程序,允许您查看饼图和数据Map,以及编辑每个表中的值。应用程序使用的数据在每个数据库中都是可用的,但是,每个数据库也有自己独有的字段,在其他数据库中找不到这些字段。
由于应用程序完全相同,我希望将它们合并到一个应用程序中,并允许用户(测量员)选择他们连接到的数据库,并在应用程序的所有页面上查看该数据库的数据。
这可能吗?我可以在index.php中有一个下拉列表来更新db.php中的数据库连接吗?这样每个需要db.php的页面都会显示index.php页面中所选数据库的数据?
数据库.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 {

}
?>

索引.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>

谢谢你的帮助

gorkyyrv

gorkyyrv1#

我很确定你的代码运行得很好,但是既然你没有尝试在 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 如果您希望同时使用旧的连接(可能对于您的常规数据库,以及身份验证的数据,您的用户应该看不到的数据)和新的连接。

相关问题