Передача значения переменной в запрос на подключение к БД

Danila

Guest
Передача значения переменной в запрос на подключение к БД

Win2000, PHP v. 4.3.0, MySQL v. 4.0.13, Apache 1.3.27

Заметил такую особенность. Если во всех типах запросов к мускулю в качестве параметров можно спокойно передавать значения переменных, то в запросе на подключение к БД
PHP:
mysql_select_db('y2004')
вместо 'y2004' подставить переменную не получится.
Есть желание хранить данные в разных базах, а код пхп использовать один и тот же для обоих баз. Но для этого надо сделать так, чтобы пользователь мог сам выбрать БД (например, 'y2005'). А для этого нужно как-то умудриться в запрос на подключение передать название базы через переменную. И вот этот-то фокус не проходит. Конечно, проблема имеет и другие пути решения. Но они менее элегантные. Интересно, неужели в этом случае разработчики не довели дело до ума?
 

Фанат

oncle terrible
Команда форума
я расскажу тебе притчу.
Один мудрый учёный всю жизнь провёл в поисках истины.
Однажды он проводил естествненнонаучный эксперимент.
Взял таракана, положил на стоял и неожиданно постучал. таракан услышал стук, занервничал и убежал. Так повторялось много раз
Тогда сей учёный муж усложнил эксперимент.
Он оторвал у таракана все ноги и снова положил на стол. Стук раздался подобен грому небесному.
Но таракан не реагировал!
- Не слышит - заключил сей титан духа.
"У таракана уши - в ногах", записал он в своём дневнике, и с чувством выполненного долга отправился к знакомой куртизанке.
 

Danila

Guest
Т.е. не будет задачка решаться, как должна была бы. Вывод-то такой, что нечего таракнов переводить, а делом уж заняться?
 

SelenIT

IT-лунатик :)
Danila
Все элементарно решается, особенно если не ставить переменные в одинарные кавычки :)
 

Danila

Guest
Пример следующий. С помощью
<select name="year_find">
<option value = "y04">2004
<option value = "y05">2005
</select>
пользователь выбирает. Хочу, например , видеть год 2005.
дальше через SWITCH для переменной $base присваивается значение 'y2004', что соответствует названию базы в мускуле.
Присваивается след.образом $base="y2004". Как вроде и положено.
Пытаемся вписать переменную $base в тело запроса на подключение:
PHP:
mysql_select_db('$base');
А когда страничку с тем запросом грузим получается "не удалось подключиться к БД". Причем значение y2004 в $base передается корректно. Проверял это выводом значения на экран. Думал сначала, что тут надо как-то хитро кавычки расставить. Ан нет, не выходит ничего. вот и думаю теперь, что для данного запроса передача переменных в принципе не предусмотрена.

-~{}~ 31.08.05 01:35:

Сейчас попробую это вариант о результатх сообщу.

-~{}~ 31.08.05 02:08:

Вашими устами SelenIT глаголет истина. Действительно, если в запросе переменную не закавычевать, то она нормально передает свое значение. Хотя в других запросах переменные кавычаться. Значит, такая вот особенность синтаксиса. Сердечно благодарю за участие!
 

Фанат

oncle terrible
Команда форума
чувак.
чтобы не выглядеть совсем уж убогим клоуном со своими домыслами про "особенности синтаксиса", потрудись прочесть ссылку которую тебе дал добрый, не недалёкий SelenIT
 

basboy

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

Надо основы РНР хорошо знать, а потом вопросов подобных этому не будет.
Если ещё не догнал, то нужно вместо
PHP:
mysql_select_db('$base');
писать
PHP:
mysql_select_db($base);
Разничу видишь?
 

Фанат

oncle terrible
Команда форума
я щас умру от смеха.
на пхпклубе новый клоун.
с дипломом
 

basboy

Новичок
Честно говоря -- обидно. А вообще тебе бы стоило обосновать твоё суждение. А пока этого не сделано буду считать твои слова пустыми.
 

Фанат

oncle terrible
Команда форума
считай =)

-~{}~ 02.09.05 11:36:

о! да ты исправился.
причём сразу.
Жаль, что я-то увидел до исправления, с дурацкими кавычками.
сейчас-то всё верно.
 

basboy

Новичок
Вообще я свою ошибку сразу понял, только исправил после твоего поста.
А вообще правильно, что ты указал на мою не правоту. Не стоит плодить кривые коды. Правда тебе бы стоило немного по-мягче выражать.

Я думаю помирились...:)
 
Сверху