在mysql数据库之间切换

时间:2009-03-12 10:40:51

标签: php mysql

function getLink($sa){
    if($sa=='1'){
        $sa = 'qp_bbl';
    } else {
        $sa = 'qp_sbl';
    }   
    return $sa;
}

if(!$_POST['action']){
    header ("Location: index.php"); 
}else{

$sa = $_POST['select'];

$sa = getLink($sa); 


$link = connect(HOST, USER, PASSWORD, $sa);

(....)
}

这让我发疯了。选择可以是'1'或'2'。如果我硬编码$ sa ='1'或'2'这一切都很好但是如果从$ _POST ['select']设置它,那就不行了。我真的不明白......

3 个答案:

答案 0 :(得分:2)

使用此解决方案,您需要在每个页面请求上发布“sa”,否则对于任何其他请求,它将始终回退到“qp_sbl”,因为您似乎不会在会话期间存储要使用的数据库

答案 1 :(得分:1)

您可以尝试使用print_r($ _ POST)检查$ _POST的内容,以确保传递$ _POST ['select']。

但是,您不应该基于$ _POST数据建立数据库连接。这不是很安全。如果要根据$ _POST有条件地选择数据库,请尝试以下方法:

switch($_POST['select']) {

  case '1':  $db = '1';  break;
  default:   $db = '2';

}

这样您就可以确定选择了有效的数据库。

答案 2 :(得分:0)

要继续jonstjohn关于print_r的评论......如果出现问题,我们还应该看看要发布到此脚本的初始表单。

在发布会话时,只需将选择值存储在会话中,然后只使用会话中的值,直到它发生变化。