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. mro - 14 Октября, 2011 - 16:39:28 - перейти к сообщению
сильно не пинайте, только начал изучать ПХП

создаю клас для работы с базой данных с использованием PDO

есть метод класа который выводит содержымое таблицы в зависимости от переданых в него имен столбцов или вывод всех столбцов по дефолту

при выводе всех столбцов работает, при выводе кастомных столбцов выводится только первая строка но WHILE продолжает работать потому что таблица генерируется но только с первой строчкой

я предполагаю что проблема в цыкле вот только не могу понять где
PHP:
скопировать код в буфер обмена
  1.  
  2. class database{
  3.     var $db_host='*';
  4.     var $db_name='*';
  5.     var $db_user='*';
  6.     var $db_pswd='*';
  7.    
  8.     function showRecords($sql,$vCols='all'){
  9.  
  10.         $dsn=$this->db_host;
  11.         $username=$this->db_user;
  12.         $password=$this->db_pswd;
  13.  
  14.         $checkQ=explode(' ', $sql);
  15.         if ($checkQ[0]== 'SELECT' OR $checkQ[0]== 'select'){ //проверка или точно был СЕЛЕКТ
  16.         try {
  17.             $db = new PDO("mysql:host=$dsn;dbname=db",$username,$password);
  18.             $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  19.             $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  20.            
  21.             $res = $db->query($sql);
  22.             $colsNum= $res->columnCount();
  23.  
  24. ///////////////////////////////start show rows///////////////////////////////
  25.             while ($row = $res->fetch(PDO::FETCH_BOTH)){// <- generate row
  26.                 print '<tr>';
  27.                 switch ($vCols){
  28.                     case 'all'://<- show all coll
  29.                         for($i=0; $i<$colsNum; $i++){
  30.                             print '<td>'.$row[$i].'</td>';
  31.                         }
  32.                         break;
  33.                     default :// собственно проблемная часть
  34.                         $vCols=explode(',',$vCols);
  35.                         $vColsNum=count($vCols);
  36.                         for($i=0; $i<$vColsNum; $i++){
  37.                             print '<td>'.$row[$vCols[$i]].'</td>';
  38.                         }
  39.                         break;
  40.                 }
  41.                 print '</tr>';
  42.             }
  43. ///////////////////////////////end show rows///////////////////////////////
  44.  
  45.             $db = NULL;
  46.         }
  47.         catch (PDOException $e) {
  48.           echo $e->getMessage();
  49.         }
  50.  
  51.     }else print '<strong>'.$checkQ[0]."</strong> not allowed!!";
  52.    }
  53. }
  54.  


заранее спасибо

 

Powered by ExBB FM 1.0 RC1