Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   задание в SELECT имени таблицы переменной (https://javascript.ru/forum/server/43752-zadanie-v-select-imeni-tablicy-peremennojj.html)

kostagal 19.12.2013 01:28

задание в SELECT имени таблицы переменной
 
Здравствуйте!
есть код:


if   (!$_POST["submitted"])    {

echo   "<form  action=''   method='POST'>

<hЗ>Выберите тип изделия:</h3>

<select  name='cat'>

<option  value='vaza'>Вазы</option>
<option  value='vazon'>Вазоны</option>

</select>
<input   type='submit'   name='submitted'   value='ok'>
</form>";
}
/*-------------------------*/
else   {
echo   "Вы  выбрали:   <br>";
echo   $_POST["cat"]; }

$categ=$_POST["cat"];

include("blocks/bd.php");/*Соединяемся с базой данных*/
$result = mysql_query("SELECT * FROM $categ");
$myrow = mysql_fetch_array($result);
do
{
echo "<br>";	
echo ($myrow['title']);
}
while ($myrow = mysql_fetch_array($result));


в первой части формируется выпадающий список и ожидаем клика на "ОК".

После "Выберите тип изделия:" появляется 2 сообщения:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in K:\home\localhost\www\lemberg\admin\add_item_glina .php on line 25

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in K:\home\localhost\www\lemberg\admin\add_item_glina .php on line 31

Во второй части пытаюсь из таблицы, которой присваиваю имя переменной $categ, выбрать все элементы 'title'.Выбираю из списка и кликаю "ОК". Все сообщения об ошибках пропадают, происходит выбор из базы всех значений таблицы.
Вопрос: что приводит к ошибкам?
первое сообщение уходит еслиудалить 25-ую строку.
второе: если явно задать имя таблицы в SELECT.
Заранее благодарю за отклик.

kostyanet 05.01.2014 08:29

Закрывающая скобка else должна быть в конце _всего_ блока обработки запроса.

Krossme 10.01.2014 19:21

Заменить:
$result = mysql_query("SELECT * FROM $categ");

на:
$result = mysql_query("SELECT * FROM `$categ`");

kostyanet 11.01.2014 05:16

Не, надо сразу

$categ='`'.$_POST["cat"].'`';

или

function tk() {
	return '`' . join('`.`', func_get_args()) . '`';
}


$categ=tk($_POST["cat"]);

ruslan_mart 11.01.2014 17:56

Цитата:

Сообщение от kostyanet
$categ=tk($_POST["cat"]);

mysql_real_escape_string($_POST['cat']);

kostyanet 13.01.2014 16:12

Ни разу не попали профессор. Курите ману по real_escape_string()


Часовой пояс GMT +3, время: 20:45.