Ошибка 1064 при запросе SELECT.

tend

Новичок
Переменные в названии таблиц.

Всем привет!
Подскажите, пожалуйста, как использовать переменные в названиях таблиц, чтобы не надо было менять названия таблиц, если что, во всех местах?
При таком коде:
PHP:
$r=mysql_query("SELECT * FROM $cats");
появляется ошибка "1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1".
По-другому как-то можно?
Thanks!
 

tend

Новичок
phprus, не понял. Я всего только несколько дней с mysql общаюсь. Да и php, можно сказать, не знаю. :)
Что значит распечатать запрос командой echo?
И куда смотреть, чтобы увидеть что не так?
 

tend

Новичок
Wicked
написал, как ты сказал. Вот что получилось:
SELECT * FROM 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1.
Если честно, я ничего пока не понимаю.
Насчет переменной: я правильно ее указал? Или надо что-то типа такого:
$r=mysql_query("SELECT * FROM \"$cats\""); ?
Или, может, еще как-то?
 

tend

Новичок
Оказывается, мне еще учиться и учиться. Но это я уже, можно сказать, выучил. :)
Проблема была в том, что эта выборка данных осуществлялась через функцию. А я до этого не знал, что в функции без объявления переменных их не будет. Теперь с помощью global все работает.
Кстати, пошло даже без `$cats` - просто $cats. Это ничего? Проблем не будет (если их сейчас нет)?
Всем спасибо за помощь! :)
 

phprus

Moderator
Команда форума
tend
Для хранения имен таблиц лучше использовать не global и переменные, а константы. Меньше глюков будет. (Например нельзя будет по ошибке в переменную хранящую название таблицы записать какие-либо данные).
 

Gorynych

Посетитель PHP-Клуба
я до этого не знал, что в функции без объявления переменных их не будет. Теперь с помощью global все работает.
мда... лучше передавать в функцию параметры, а не использовать глобальные переменные.
 

tend

Новичок
phprus и Gorynych, спасибо за советы.
Если можно, покажите это осуществить на практике. Напишите небольшие примерчики.
Romantik, спасибо, начинаю привыкать обрамлять обратными кавычками. :)
 

Gorynych

Посетитель PHP-Клуба
tend
не, знаете, Вам нужно купить какую-нибудь книжку для начинающих и прочитать. Потому как если понятие педеча параметров в функцию требует пояснения, то Вы не просто "php можно сказать не знаю", Вы скорее всего не имеете вообще представления о программировании.

От души рекомендую "Самоучитель PHP" Димы Котерова (только не берите аналогичную по названию книжку Колисниченко - честное слово, автору или не достает умения излагать свои мысли, или уровень его знаний оставляет желать лучшего)
 

tend

Новичок
Ко мне можно на "ты", я не обидчив. :)
По поводу представления о программировании - какое-то все-таки имею. Но оно, конечно, очень-очень поверхностное.
Котерова несколько дней назад скачал и изучаю. Очень хорошо написано, мне нравится.
Насчет передачи параметров в функцию: прочитал у Котеровал про переменные, функции и все с ними связанное, а также всякие статьи почитал. Понятие какое-то появилось, но "мозаика до конца не сложилась".
Я вот до конца не могу понять: что значит "передавать в функцию параметры, а не использовать глобальные переменные." Мысль есть: что-то типа function (параметры) {}. Правильная мысль?
Вот, например, как у меня: в начале файла я присваиваю переменной значение: $cats="cats"; После переменных идут функции. Вот что конкретно мне нужно сделать, что функция заработала? Просто дописать в скобки эту переменную? Вот так: function ($cats)?
 

HraKK

Мудак
Команда форума
Прочитай про область видимости переменных.

$a=1
$b=1
function g($b)
{
$b++;
$c=1;
print $a;
}
g();
print ($b+$c);

как ты думаешь что выведет данный скрипт?
 

tend

Новичок
Вроде бы сложилась у меня мозаика до конца. Вроде бы понял я смысл работы функций и передачи им переменных. Прошу проверить.
$text="Hello";
function show($ok) { echo $ok; }
show($text);
В аргументах (то, что в скобках) функции мы указываем значения, которые будут подставлены в переменные, находящиеся внутри этой функции. То есть для того, чтобы вывести "Привет", нужно запустить show("Привет").
А для того, чтобы вывести использовать переменную внутри функции, нужно соответственно указать в скобках переменную, то есть запустить show($text).
Я правильно все понял? :)

-~{}~ 06.07.06 23:05:

HraKK, сначала я продумал раз 10 скрипт, потом все-таки пришлось заново открывать Котерова и читать тоже несколько раз до того, как въехал. Интересно, до всех так въезжало или я "избранный"? :)
print $a; - не сработает, так как для функции $a - false (мы ее не объявляли)
print ($b+$c); - насчет этого не уверен. Я не нашел, что происходит в том случае, если в функции переменная есть, а вне функции не была объявлена, но мне кажется, что если переменная была только в функции, то она там и останется, то есть вне функции действовать она не будет. Насчет моих мыслей прошу прокомментировать. Интересно узнать что будет в таких случаях.
И, наконец, $b - останется единицей. Если бы мы внутри функции сделали print $b, тогда вывело бы "2".
Получается, что скрипт выведет "1".
Правильно?
 
Сверху