Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: не могу понять как составить запрос.
Форумы портала PHP.SU » » Работа с СУБД » не могу понять как составить запрос.

Страниц (1): [1]
 

1. notamn - 18 Февраля, 2012 - 14:36:08 - перейти к сообщению
я написал вотт это для получения из БД списка таблиц, а затем для вывода состава этих таблиц с заголовками колонок:
PHP:
скопировать код в буфер обмена
  1.  
  2.         if ($_GET['cat']) //если значение cat существует то...
  3.         {
  4.                 $page = $_GET['cat']; // имя таблицы
  5.                                 // выбираем имена поей из таблицы cat
  6.                 $fields = mysql_list_fields("DB_name", "$page");
  7.                 $columns = mysql_num_fields($fields);
  8.                 $select = mysql_query("select * from $page");
  9.                
  10.                 echo'<table class=tablet colspan=0><tr class=tabletr>';
  11.                 for ($i=0; $i<$columns; $i++) // выводим шапку таблицы(список имен полей)
  12.                         {
  13.                                 $col1 = mysql_field_name($fields,$i);
  14.                                 echo'
  15.                                         <td class=tabletd>'.$col1.'</td>
  16.                                 ';
  17.                         }
  18.                         echo'</tr>';
  19.                
  20.                 while ($row = mysql_fetch_array($select)) // выводим данные из таблицы
  21.                 {
  22.                         echo'<tr>';
  23.                                 for($i=0; $i<$columns; $i++)
  24.                                 {
  25.                                         $col = mysql_field_name($fields,$i);
  26.                                         $rownl2br = nl2br($row[$col]);
  27.                                         echo
  28.                                         '<td>
  29.                                             <td class=tabletd><a href="index.php?hfield='.$rownl2br.'&tab='.$page.'&col1='.$col.'">'.$rownl2br.'</a></td>
  30.                                         ';
  31.                                 }
  32.                         echo'</tr>';
  33.                 }
  34.                 echo'</table>';
  35.         }
  36. if ($_GET['hfield'])
  37.         {
  38.                 $tab = $_GET['tab'];//название таблицы
  39.                
  40.                 $cell = $_GET['hfield'];// имя колонки
  41.                
  42.                 $col1 = $_GET['col1'];//содержание ячейки
  43.                
  44.                 echo '<br>'.$col1.'  - colname';//эти переменные
  45.                
  46.                 echo '<br>'.$cell.'  - cell';//нормально
  47.                
  48.                 echo '<br>'.$tab.'   - table';//отображаются
  49.                
  50.                
  51.                 $search = "select * FROM '$tab' WHERE '$col1' = '$cell'";
  52.  
  53.                 $res = mysql_query($search);
  54.                 while ($row = mysql_fetch_array($res)) //здесь ошибка
  55.                 {
  56.                         $id = $row[$col1];
  57.                         echo $id.'<br>';
  58.                 }
  59.         }
  60.  
  61.  
  62.  


мне постоянно выдается ошибка в этой строке

ошибка такая:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /yorsite.ru/edit.php on line 59
Подскажите пожалста если кто знает в чем беда? Спасибо.
2. DelphinPRO - 18 Февраля, 2012 - 15:18:53 - перейти к сообщению
вставить
после
PHP:
скопировать код в буфер обмена
  1. $res = mysql_query($search);
Посмотреть какую ошибку выдает БД. Разобраться самому, или написать текст ошибки сюда.
(Добавление)
Возможно ошибка в прямых кавычках в названиях тадлицы и поля. Следует писать обратные апострофы.
PHP:
скопировать код в буфер обмена
  1. $search = "select * FROM `$tab` WHERE `$col1` = '$cell'";
3. Symby - 18 Февраля, 2012 - 16:43:27 - перейти к сообщению

хм, вроде же надо так
PHP:
скопировать код в буфер обмена
  1.  $columns = mysql_num_fields($fields)-1;

Так как возвращает с единицы, а надо производить счет с нуля, поэтому уменьшаем на единицу.
4. notamn - 18 Февраля, 2012 - 18:09:38 - перейти к сообщению
Цитата:

Возможно ошибка в прямых кавычках в названиях тадлицы и поля. Следует писать обратные апострофы.
PHP:
скопировать код в буфер обмена
  1. $search = "select * FROM `$tab` WHERE `$col1` = '$cell'";


Да спасибо. Помогло.

 

Powered by ExBB FM 1.0 RC1