Переключение между базами данных MySQL - PullRequest
0 голосов
/ 12 марта 2009
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 ]

2 голосов
/ 12 марта 2009

В этом решении вам нужно отправлять «sa» при каждом запросе страницы, в противном случае он всегда будет возвращаться к «qp_sbl» для любого другого запроса, поскольку вы, похоже, не сохраняете базу данных, которую хотите использовать во время сеанса .

1 голос
/ 12 марта 2009

Вы можете попробовать проверить содержимое $ _POST, используя print_r ($ _ POST), чтобы убедиться, что $ _POST ['select'] проходит.

Вы не должны устанавливать соединение с базой данных на основе данных $ _POST. Это не очень безопасно. Если вы хотите условно выбрать базу данных на основе $ _POST, попробуйте что-то вроде этого:

switch($_POST['select']) {

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

}

Таким образом, вы уверены, что выбираете действительный дБ.

0 голосов
/ 12 марта 2009

Чтобы продолжить комментарий Джонстджона о print_r ... нам также пришлось бы увидеть исходную форму, предназначенную для публикации в этом скрипте, на случай, если там возникнет проблема.

Может также помочь просто сохранить значение select в сеансе, когда оно публикуется, а затем просто использовать значение из сеанса, пока оно не изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...