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 :: Версия для печати :: DB Error: no such field
Форумы портала PHP.SU » PHP » PEAR и PECL » DB Error: no such field

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

1. Seruy - 28 Августа, 2009 - 23:34:07 - перейти к сообщению
При открытии статистики любого пользователя сайта, вылетает ошибка: DB Error: no such field

Прошёлся по Рунету, вычитал это т.к., сайт использует PEAR:

This prints:

DB Error: no such field
To print out an error message and then quit, use PEAR_ERROR_DIE. You can also use the PEAR_ERROR_CALLBACK constant to run a custom function when an error is raised. This custom function can print out even more detailed information:

function pc_log_error($error_obj) {
error_log(sprintf("%s (%s)",$error_obj->message,$error_obj->userinfo));
}

$dbh->setErrorHandling(PEAR_ERROR_CALLBACK,'pc_log_error');
$sth = $dbh->query("SELECT aroma FROM zodiac WHERE element LIKE 'fire'");

Сама страничка privatecase.php, что должна выводить информауию выглядит так:

Спойлер (Отобразить)


Это страничка отрывает "Личное дело" (зарегистрированных пользоваталей) , кто сколько нафлудил, публикаций оставил и т.д.

Есть надежда узнать что он просит?
2. Champion - 29 Августа, 2009 - 08:47:03 - перейти к сообщению
Нашел, на какой строке ошибка происходит?
(Добавление)
В общем найди, там наверняка запрос к БД, и в нём участвует поле, которого нет в таблице.
3. Seruy - 29 Августа, 2009 - 10:21:33 - перейти к сообщению
Если я правильно пошёл запрос:

CODE (text):
скопировать код в буфер обмена
  1.        $DB = Registry::instance()->DB;
  2.  
  3.         // first get violation types
  4.  
  5.         $evaltypes = $DB->getAll("SELECT `id`, `description`, `points` FROM ".PREFIX."evaluation_types ORDER BY `id` ASC");
  6.  
  7.         //second get list of violations
  8.  
  9.         $evaluations = $DB->getAll("
  10.                 SELECT
  11.                 `e`.`id`,
  12.             `e`.`date`,
  13.             `e`.`comment`,
  14.                 `e`.`publication_link`,
  15.             `u`.`username` AS `investigated`,
  16.             `et`.`description`,
  17.                 `et`.`points`,
  18.             `m`.`username` AS `moderator`
  19.             FROM
  20.             `".PREFIX."evaluations` e,
  21.             `".PREFIX."users` u,
  22.             `".PREFIX."users` m,
  23.             `".PREFIX."evaluation_types` et
  24.                     WHERE
  25.             `e`.`user_id`=`u`.`id`
  26.             AND
  27.                 `e`.`evaluation_type_id`=`et`.`id`
  28.             AND `e`.`moderator_id` = `m`.`id`
  29.             AND `u`.`id`='".request("user_id")."';");
  30.        //print_r($evaluations);
  31.         $total_points = 0;
  32.         if ($evaluations)
  33.         {
  34.                 for($i=0;$i<count($evaluations);$i++)
  35.                 {
  36.                 $total_points += $evaluations[$i]["points"];
  37.                 }
  38.         }
  39.  
  40.         $actions = $DB->getAll("SELECT `more_or_less`, `than_value`, `move_to_usergroup` FROM `".PREFIX."action_list`;");
  41.         $usergroups = $DB->getAll("SELECT `id`, `title` FROM ".PREFIX."usergroups ORDER BY `id` ASC");
  42.  
  43.         $Template = Registry::instance()->Template;
  44.         $Template->assign('total_points', $total_points);
  45.         $Template->assign('user_id', request('user_id'));
  46.         $Template->assign('evaluations', $evaluations);
  47.         $Template->assign('evaltypes', $evaltypes);
  48.         $Template->assign('action_report', $action_report);
  49.         $Template->assign('actions', $actions);
  50.         $Template->assign('usergroups', $usergroups);


а уже как возмёт инфу с БД то уже формирование в тимплейт страницу:

CODE (text):
скопировать код в буфер обмена
  1.         $Template->display('privatecase.tpl');


Ща сгляну что там в БД. Жаль логги не пишет БД об ошибке, сразу бы узнать на чём затык.
4. Champion - 29 Августа, 2009 - 12:06:41 - перейти к сообщению
выведи получающийся запрос на экран и выполни его в СУБД
5. Seruy - 30 Августа, 2009 - 11:35:26 - перейти к сообщению
Champion пишет:
выведи получающийся запрос на экран и выполни его в СУБД


Впринципе я понимаю о чём речь, но это выше моих знаний, хотя я бекаплюсь но чёт не то сделаю и боюсь напортачу. Я думаю кто разбирается надо с тем связаться с большой получки Улыбка и он всё поправит на договорную цену. А так я чуствую не сделаю или буду пол года так ещё делать Улыбка
6. Champion - 30 Августа, 2009 - 11:54:04 - перейти к сообщению
вывести - это вставить echo в нужное место. Потом надо скопировать и вставить PMA или чем ты еще пользуешься. Если это SELECT, ничего плохого не произойдет. Он только читает и ничего не меняет.
А тем более запрос даже не выполняется, а выдает ошибку. Ничего плохого тем более не произойдет))
7. Seruy - 30 Августа, 2009 - 18:11:54 - перейти к сообщению
Champion пишет:
вывести - это вставить echo в нужное место. Потом надо скопировать и вставить PMA или чем ты еще пользуешься. Если это SELECT, ничего плохого не произойдет. Он только читает и ничего не меняет.
А тем более запрос даже не выполняется, а выдает ошибку. Ничего плохого тем более не произойдет))


Обязательно попробую завтра на работе и отпишусь. Спасибо за помощь Улыбка

 

Powered by ExBB FM 1.0 RC1