X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Переменная в запросе к БД
toorr2p
toorr2p
Topic Starter сообщение 19.8.2009, 4:29; Ответить: toorr2p
Сообщение #1


Подскажите как засунуть переменную в запрос к БД?

Тоесть мне нужно чтоб в запрос подставлялось значение переменной = названию таблицы в БД

Код:

[php]if($_GET['id']){$id = $_GET['id'];}

if(isset($_GET['article'])){$sql_tabl='article';}
if(isset ($_GET['news'])){$sql_tabl='news';}
if(isset ($_GET['grafic'])){$sql_tabl='grafic';}
if(isset ($_GET['download'])){$sql_tabl='download';}
if(isset ($_GET['lesson'])){$sql_tabl='lesson';}


$result = mysql_query ("SELECT * FROM '$sql_tabl' WHERE id='$id'",$db);
$myrow = mysql_fetch_array ($result);

echo'<meta name="keywords" content="'.$myrow ["meta_k"].'">
<meta name="description" content="'.$myrow ["meta_d"].'">';[/php]



тоесть как правильно прописать
'$sql_tabl'
?

Или это вообще не так делается?
Зарание спасибо!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
сообщение 19.8.2009, 11:25; Ответить: Banderas
Сообщение #2


Попробуй взять '$sql_tabl' в двойные кавычки "$sql_tabl"
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
psiallon
psiallon
сообщение 19.8.2009, 12:10; Ответить: psiallon
Сообщение #3


[php]$result = mysql_query ("SELECT * FROM {$sql_tabl} WHERE id='$id'",$db);[/php]
Там вообще никаких кавычек не должно быть!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ilyazh
ilyazh
сообщение 19.8.2009, 12:23; Ответить: ilyazh
Сообщение #4


psiallon, Почему? Можно без проблем записать в виде '$sql_table' и будет работать. =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 19.8.2009, 12:27; Ответить: НЕПЛОХОЙ
Сообщение #5


[php]$result = mysql_query ("SELECT * FROM ".$sql_tabl." WHERE id='".$id."'",$db);[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
toorr2p
toorr2p
Topic Starter сообщение 19.8.2009, 12:55; Ответить: toorr2p
Сообщение #6


Спасибо большое!!!

написал вот так:

if(isset($_GET['article'])){$sql_tabl='article';}
if(isset ($_GET['news'])){$sql_tabl='news';}
if(isset ($_GET['grafic'])){$sql_tabl='grafic';}
if(isset ($_GET['download'])){$sql_tabl='download';}
if(isset ($_GET['lesson'])){$sql_tabl='lesson';}


$result = mysql_query ("SELECT * FROM ".$sql_tabl." WHERE id='$id'",$db);
$array_k_d = mysql_fetch_array ($result);


Все работает отлично!!!

И так мы сократили обьем кода с:

if(isset($_GET['article'])){$result = mysql_query ("SELECT meta_k,meta_d FROM article WHERE id='$id'",$db);}
if(isset ($_GET['news'])){$result = mysql_query ("SELECT meta_k,meta_d FROM news WHERE id='$id'",$db);}
if(isset ($_GET['grafic'])){$result = mysql_query ("SELECT meta_k,meta_d FROM grafic WHERE id='$id'",$db);}
if(isset ($_GET['download'])){$result = mysql_query ("SELECT meta_k,meta_d FROM download WHERE id='$id'",$db);}
if(isset ($_GET['lesson'])){$result = mysql_query ("SELECT meta_k,meta_d FROM lesson WHERE id='$id'",$db);}

$array_k_d = mysql_fetch_array ($result);


до:

if(isset($_GET['article'])){$sql_tabl='article';}
if(isset ($_GET['news'])){$sql_tabl='news';}
if(isset ($_GET['grafic'])){$sql_tabl='grafic';}
if(isset ($_GET['download'])){$sql_tabl='download';}
if(isset ($_GET['lesson'])){$sql_tabl='lesson';}


$result = mysql_query ("SELECT * FROM ".$sql_tabl." WHERE id='$id'",$db);
$array_k_d = mysql_fetch_array ($result);


Всем спасибо :rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 19.8.2009, 13:19; Ответить: ZiTosS
Сообщение #7


Вячеслав, учимся оформлять код(читаем тему подсветка кода)

Вообще то что находится в PHP между " и " обычно называется строкой(за исключением ключей в массивах и доступов к состояниям объекта).
И то что ты спрашиваешь называется обычной конкатенацией строк.
Все пишут на свой вкус. PHP запросто понимает все варианты:
[php]"SELECT * FROM {$sql_tabl} WHERE id={$id}" # обычно тоже так пишу
"SELECT * FROM $sql_tabl WHERE id=$id"
"SELECT * FROM ". $sql_tabl ." WHERE id=". $id
'SELECT * FROM '. $sql_tabl .' WHERE id='. $id[/php]
Чем же хорош первый вариант:
1) Удобочитаемость кода
2) Запросто можно вставить $array['key'] вместо $array[key] - экономится время на обращение к константной области.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
psiallon
psiallon
сообщение 19.8.2009, 13:25; Ответить: psiallon
Сообщение #8


(ilyazh @ 19.8.2009, 14:23) *
Почему? Можно без проблем записать в виде '$sql_table' и будет работать. =)

Ошибаетесь, для названий таблиц, полей и т.п., нужно использвовать обратный апостроф, а не прямой, как вы говорите!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ilyazh
ilyazh
сообщение 19.8.2009, 13:49; Ответить: ilyazh
Сообщение #9


я всю жизнь использую такой апостроф и всё работает нормально. Как сказал Зитос - php работает со всякими апострофами.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
psiallon
psiallon
сообщение 19.8.2009, 14:23; Ответить: psiallon
Сообщение #10


При чем тут PHP :rolleyes: , я говорю про SQL запрос, у Вячеслава была ошибка в том, что переменная (имя таблицы) была заключена в прямой апостроф, а в sql для названия таблиц нужно либо опускать апострафы вообще, либо использовать обратные! И вы в своем первом посте, опять-же советуете человеку допустить ошибку, которую я ему посоветовал исправить!.. И с конкатенацией строк у него проблем не было, там было все сделано верно!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 29.3.2024, 0:45
Дизайн