Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 25.10.2016
Сообщений: 83

Не инициализированная переменная $pdo?

11.12.2016, 15:48. Показов 1198. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Начал смотреть видеоуроки по созданию интернет магазина. Когда добрался до MVC и создания соединения с БД столкнулся с такой проблемой:
1) Автор урока пишет на mysql;
Ну думаю напишу подключение и запросы на mysqli, но не тут то было.
В функциях mysqli передается два аргумента, а у меня подключение к БД и запросы к таблицам на разных страницах, соответственно когда я выполняю к запрос мне нужно передать класс подключения к БД. И вот он уже у меня не определяется и из-за этого выдает ошибку. Пробывал через PDO сделать подключение все тоже самое. Пробывал через isset ничего. Даже подключал файл в котором содержится соединение с БД. А в видеоуроке, он в функции просто прописывает запрос, обрабатывает его и все, на другой странице эта функция запрашивается без проблем.

По данному адресу лежат файлы, подключение к БД в папке config, запрос в models.

 Комментарий модератора 
Файлы загружайте на форум во избежание их утраты на иных ресурсах!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2016, 15:48
Ответы с готовыми решениями:

потенциально не инициализированная переменная
вс2012 вот так ругается на current где пометил почему не понимаю #include<Windows.h> #include <clocale> #include...

Ошибка c4700. Не инициализированная переменная
Доброго времени суток. Помогите пожалуйста разобраться, в чем причина ошибки c4700... Не могу понять что не так... Person.h #pragma...

Инициализированная переменная почему то null
Добрый день! Речь о платформе Windows Runtime: Есть классы public class MyOtherClass { private...

2
65 / 65 / 47
Регистрация: 04.12.2016
Сообщений: 214
11.12.2016, 16:04
Ваше подключение должно быть видимо во всём файле, где вы его получаете. Затем, где вы делаете запросы, делаете require этого файла, и пользуетесь переменной.
0
1 / 1 / 1
Регистрация: 25.10.2016
Сообщений: 83
11.12.2016, 16:46  [ТС]
Лучший ответ Сообщение было отмечено Tverdislav как решение

Решение

Я же написал что пробывал и include_once и require прямо в файле с запросом и ничего не получается, я бы сюда не писал если бы это сработало.

Добавлено через 9 минут
db.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$dblocation = "localhost";
$dbname = "myshop";
$dbuser = "root";
$dbpasswd = "";
$charset = "utf8";
 
// соединяемся с БД
$dsn = "mysql:host=$dblocation;dbname=$dbname;charset=$charset";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_WARNING,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $dbuser, $dbpasswd, $opt);


CategoriesModel.php

PHP
1
2
3
4
5
6
7
8
9
10
11
function getAllMainCatsWithChildren() {
    $rs = $pdo -> prepare('SELECT * 
            FROM categories
            WHERE parent_id = 0');
    $smartyRs = array();
    while ($row = $rs->fetchAll(PDO::FETCH_ASSOC))
    {
        $smartyRs[] = $row;
    }
    return $smartyRs;
}


IndexController.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
 * Контроллер главной страницы
 * 
 */
 
//подключае модели
include_once '../models/CategoriesModel.php';
 
function testAction() {
    echo 'IndexController.php > testAction';
}
 
/**
 * Формирование главной страницы сайта
 * 
 * @param object $smarty шаблонизатор
 */
function indexAction($smarty) {
    
    $rsCategories = getAllMainCatsWithChildren();
    
    $smarty->assign('pageTitle', 'Магазим электронной техники');
    $smarty->assign('rsCategories', $rsCategories); 
    
    loadTemplate($smarty, 'header');
    loadTemplate($smarty, 'index');
    loadTemplate($smarty, 'footer');
}


index.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
include_once '../config/config.php';          // Инициализация настроек
include_once '../config/db.php';              // Инициализация базы данных
include_once '../library/mainFunctions.php';  // Основные функции
 
//определяем с каким контроллером будем работать
$controllerName = isset($_GET['controller']) ? ucfirst($_GET['controller']) : 'Index';
 
//определяем с какой функцией будем работать
$actionName = isset($_GET['action']) ? ucfirst($_GET['action']) : 'Index';
 
 
loadPage($smarty, $controllerName, $actionName);


mainFunction.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
 * 
 * Основные функции
 * 
 */
 
/**
 * Формирование запрашиваемой страницы
 * 
 * @param type $controllerName название контроллера
 * @param type $actionName название функции обработки страницы
 */
function loadPage($smarty, $controllerName, $actionName = 'index'){
    
    include_once PathPrefix.$controllerName.PathPostfix;
    
    $function = $actionName.'Action';
    $function($smarty);
}
 
/**
 * Загрузка шаблона
 * 
 * @param object $smarty объект шаблонизатора
 * @param string $templateName  название файла шаблона
 */
function loadTemplate($smarty, $templateName)
{
    $smarty->display($templateName . TemplatePostfix);
}
 
/**
 * Функция отладки. Останавливает работу программы выводя значение переменной
 * $value
 * 
 * @param variant $value переменная для вывода ее на страницу
 * @param type $die по умолчанию останавливает работу кода
 */
function d($value = null, $die = 1)
{
    echo 'Debug: <br/><pre>';
    print_r($value);
    echo '</pre>';
    
    if ($die) die;
}


config.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//>Константы для обращения к контроллерам
define('PathPrefix', '../controllers/');
define('PathPostfix', 'Controller.php');
//<
 
//> используемый шаблон
$template = 'default';
 
// пути к файлам шаблонов (*.tpl)
define('TemplatePrefix', "../views/{$template}/");
define('TemplatePostfix', '.tpl');
 
//пути к файлам шаблонов в вебпространстве
define('TemplateWebPath', "/templates/{$template}/");
//<
 
//> Инициализация шаблонизатора Smarty
// put full path to Smarty.class.php
require ('../library/Smarty/libs/Smarty.class.php');
$smarty = new Smarty();
 
$smarty->setTemplateDir(TemplatePrefix);
$smarty->setCompileDir('../tmp/smarty/templates_c');
$smarty->setCacheDir('../tmp/smarty/cache');
$smarty->setConfigDir('../library/Smarty/configs');
 
$smarty->assign('templateWebPath', TemplateWebPath);
//<
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2016, 16:46
Помогаю со студенческими работами здесь

Доброго времени. Ошибка использована не инициализированная локальная переменная "x"
#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void read(int x) { int count = 0; char...

Не инициализированная переменная "k" в цикле
import java.util.Scanner; class Powermy4{ public static void main(String args){ Scanner variable = new Scanner(System.in); ...

Переменная=Документ.имя. Сделать выборку всех документов с именем Переменная
Привет всем. У меня есть проблема и варианты решения, но они не работают. Проблема вот такая: Есть переменная Документ1 в...

Модульная переменная или блочная статическая переменная: что лучше
Переменная (тип String) нужна на всем протяжении работы программы. Нужен совет опытных - что предпочтительнее: модульная переменная или...

Проблема с Adodc: 'Переменная объекта или переменная блока With не задана'
В свойствах самого контрола (MS ADO Data Control) проверка подключения к атблице (подключаюсь через ODBC) проходит нормально. Когда же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru