Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вместо названия таблицы поставить переменную?
 
 автор: BlueWolf   (24.05.2010 в 13:18)   письмо автору
 
 

У меня в базе имеется десяток таблиц.
В зависимости по какой ссылке переходит пользователь происходит пердача методом гет Названия таблицы.
Загвоздка в том что название таблицы у меня в переменной и я не знаю как её поставить
в строчку $st_select = mysql_query(“SELECT * FROM Здесь переменная”,$db);
Ниже скрипт как я делаю, но всегда выходит надпись таблица не надена
<?
if (isset($_GET['st'])) {$st=$_GET['st'];}
if (!isset($st)) {$st=eror;}
?>
<?
$podrazdelfotoalbomurl = '/'.$st.'';
echo "$podrazdelfotoalbomurl";
$sttable="gallery$st"; //Это нужно чтобы выбрать только таблицы с началом gallery
$st_select = mysql_query(“SELECT * FROM $sttable”,$db);
if ($st_select=='true') { echo 'захватил таблицу'.$sttable;}
else {echo 'Ошибка таблица'.$sttable.'не найдена';}
?>

  Ответить  
 
 автор: Trianon   (24.05.2010 в 13:27)   письмо автору
 
   для: BlueWolf   (24.05.2010 в 13:18)
 

1. иногда вызов mysql_query полезно менять на вызов echo . Просто чтобы видеть, что же Вы пытаетесь истребовать от SQL-сервера.
2. У Вас заблокирован вывод диагностик. Ошибок в скрипте Вы не видите.
3. подобного рода методика составления запроса открывает замечательную дыру для уязвимости SQL-injection.

  Ответить  
 
 автор: BlueWolf   (24.05.2010 в 14:07)   письмо автору
 
   для: Trianon   (24.05.2010 в 13:27)
 

При помощи echo проверрил
echo "SELECT * FROM $sttable"
Вывел на экран вместо $sttable название таблицы которая мне нужна.
Мне кажется в $st_select = mysql_query("SELECT * FROM $sttable",$db);
переменная $sttable воспринимается как текст $sttable

2 про какие заблокированные ошибки вы говорили.
насколько я знаю ошибки блокируют вот так : $st_select = @mysql_query("SELECT * FROM $sttable",$db);
Ставя собачку.

  Ответить  
 
 автор: Trianon   (24.05.2010 в 15:01)   письмо автору
 
   для: BlueWolf   (24.05.2010 в 14:07)
 

1.
$sql = "SELECT * FROM $sttable";
echo $sql;
$st_select = mysql_query($sql, $db);
if(!$st_select) exit("<br>".mysql_error());


2. мало знаете.
error_reporting должен быть E_ALL

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования