2009-03-12 3 views
0
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'], это не будет. Я не очень понимаю ...Переключение между базами данных mysql

ответ

2

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

1

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

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

switch($_POST['select']) { 

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

} 

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

0

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

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

Смежные вопросы