0

我正在处理的代码有点混乱,因为我没有制作这个。但我想做的是从不同的数据库中获取登录信息。我不能只修改数据库连接的 config.php,因为它会弄乱整个系统。我尝试通过在 mysql_connect 上存储不同的变量来连接 2 个数据库。但在这种情况下,它有点令人困惑。有没有另一种方法可以在登录过程中只更改一次数据库连接?

login.php(提交登录信息后的 php 文件)

include("inc/config.php");



$connection = mysql_connect($hostname, $user, $pass) or die ("Unable to connect!");
$query = "SELECT * FROM clients WHERE name = '$name' AND password = '$password'";
$result = mysql_db_query($database, $query, $connection);
$date_in = date("Y-m-d"); 
$time_in = date("H:i:s");
$client_accesslogin = $name;



if (mysql_num_rows($result) == 1)
    {
    session_start();
 session_register('time_in');
 session_register('date_in');
 session_register('client_accesslogin');
 session_register('remoteaddr');

 $_SESSION['time_in']=$time_in;
 $_SESSION['date_in']=$date_in;
 $remoteaddr = $_SERVER['REMOTE_ADDR'];
 $ipaddr = $_SERVER['REMOTE_ADDR'];   
 $client_accesslogin = $_SESSION['client_accesslogin'];

    session_register("client_id");
    session_register("client_name");
    session_register("client_email");
    session_register("client_company");
    list($clientid, $name,$first_name,$last_name, $pass, $email, $company) = mysql_fetch_row($result);
    $client_id = $clientid;
    $client_name = $name;
    $fname=$first_name;
    $lname=$last_name;
    $client_email = $email;
    $client_company = $company;
    $cisloggedin = 'Yes';
    session_register("cisloggedin");
    session_register("fname");
    session_register("lname");
    header("Location: menu.php");
    mysql_free_result ($result);    

    mysql_close($connection);
    }
$connection = mysql_connect($hostname, $user, $pass) or die ("Unable to connect!");
$query = "SELECT * FROM admins WHERE name = '$name' AND password = '$password'";
$result = mysql_db_query($database, $query, $connection);
$date_in = date("Y-m-d"); 
$time_in = date("H:i:s");
$accesslogin = $name;




if (mysql_num_rows($result) == 1)
    {
    session_start();

 session_register('time_in');
 session_register('date_in');
 session_register('accesslogin');
 session_register('remoteaddr');

 $_SESSION['time_in']=$time_in;
 $_SESSION['date_in']=$date_in;
 $remoteaddr = $_SERVER['REMOTE_ADDR'];
 $ipaddr = $_SERVER['REMOTE_ADDR'];   
 $accesslogin = $_SESSION['accesslogin'];

    session_register("client_id");
    session_register("client_name");
    session_register("client_email");
    list($clientid, $name, $pass, $email) = mysql_fetch_row($result);
    $client_id = $clientid;
    $client_name = $name;
    $client_name = "admin";
    $client_email = $email;
    $isloggedin = 'Yes';
    session_register("isloggedin");
    header("Location: menu.php");
    mysql_free_result ($result);    

    mysql_close($connection);
    }
else
    {
    mysql_free_result ($result);    
    mysql_close($connection);

    header("Location: index.php");
    exit;
    }
?>

这样可行。但是如果我删除包含的 config.php 并添加连接:

$database = "invoices"; 
$user = "root";     
$pass = "";    
$hostname = "localhost";  

它没有登录。我不明白。inc/config.php 有一些与连接相关的代码,但为什么我不能只添加连接本身而不使用包含?

4

3 回答 3

0

做了一个函数来连接你的数据库,也可以关闭你的连接。

function connect(user, pass, location)

function disconnect()

然后你连接到你的第一个数据库,做你的操作。关闭它,然后打开与另一个数据库的新连接并执行您的操作。

如果您想同时保持 2 个连接,您可以将实例保存到变量中

并做:

mysqli_select_db($instance1, 'SELECT ...');
mysqli_select_db($instance2, 'SELECT ...');

还要在您的查询中转义您的变量:)

于 2013-02-08T12:34:36.860 回答
0

我正在假设有一个专用页面用于登录处理?

在这种情况下,您可以只在登录页面上创建一个新的 config.php 并连接到该数据库?

您的一些代码或结构会有所帮助。

于 2013-02-08T12:34:55.850 回答
0

mysql_select_db() 函数设置活动的 MySQL 数据库。

句法

bool mysql_select_db ( string database_name [, resource link_identifier])

mysql_select_db() 尝试选择与指定链接标识符关联的服务器上的现有数据库。

成功时返回 TRUE,失败时返回 FALSE。

我们可以使用 mysql_select_db 函数在 mysql 服务器中选择数据库。mysql_select_db() 选择服务器上与指定链接标识符关联的当前活动数据库。如果未指定链接标识符,则假定最后打开的链接。如果没有打开链接,该函数将尝试设置一个链接,就好像 mysql_connect() 没有参数被调用一样。

于 2013-02-08T12:35:22.297 回答