我目前有几个具有相同表的数据库(人员,业务,团体,申诉等)。我有一个应用程序,可让您查看饼图和数据图以及在每个表中编辑值。应用程序使用的数据在每个数据库中都可用,但是每个数据库还具有其自身唯一的字段,而在其他数据库中找不到。
由于应用程序完全相同,因此我想将它们组合为一个应用程序,并允许用户(调查员)选择他们连接的数据库,并在应用程序的所有页面上查看该数据库的数据。 / 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()">☰ 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>
感谢您的帮助
答案 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
新的。