$ GLOBAL Установка таблицы в массиве Вызов функции-члена

Хорошо, я использую GLOBALS, чтобы установить некоторые настройки на моем сайте

$tmp = $GLOBALS['_ODB']->query("SELECT * FROM `options`");
$GLOBALS['options'] = NameToTop($tmp->fetchAll(PDO::FETCH_ASSOC));

У меня это как мой запрос, затем я использую эту функцию, чтобы поместить возвращенные данные в массив

Так что я могу назвать это с помощью $GLOBALS['settings']['setting1']

 function NameToTop($arr)
{
$output = array();
foreach ($arr as $val) {
$output[$val['name']] = $val['value'];
}
return $output;
}

Тогда вот таблица настроек, я не понимаю, почему это идет не так; Я действительно нуждаюсь в помощи.

CREATE TABLE IF NOT EXISTS `options` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`value` text NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Dumping data for table `options`
--

INSERT INTO `options` (`ID`, `name`, `value`) VALUES
(1, 'setting1', 'Name'),
(2, 'email', '[email protected]'),
(3, 'site_title', 'Title of Site'),

я собираюсь

Вызов функции-члена fetchAll () для необъекта

1

Решение

Вы ожидаете $tmp быть объектом PDOStatement для вызова fetchAll() на нем, но это не так, следовательно, вы видите сообщение об ошибке.

PDO::query() возвращает false при неудаче, так что это, скорее всего, происходит.

Этот комментарий из руководства PDO говорит о возвращаемой стоимости query():

Обработка ошибок этой функцией контролируется
атрибут PDO :: ATTR_ERRMODE.

Используйте следующее, чтобы сделать исключение:

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Вы должны прочитать о обработка ошибок в PDO. Большинство людей склонны идти по пути исключений.

Это сделало бы ваш пример примерно таким:

try {
$tmp = $GLOBALS['_ODB']->query("SELECT * FROM `options`");
$GLOBALS['options'] = NameToTop($tmp->fetchAll(PDO::FETCH_ASSOC));
} catch (PDOException $e) {
// handle the error in some way
echo $e->getMessage();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]