@Evgenii7

Небольшой скрипт на PHP(вывод из бд). Почему не работает?

Есть файл conn.php - скрипт подключения к БД:
<?php
$conf = parse_ini_file('config.ini');

$host = $conf['mysql_host'];
    $db   = $conf['mysql_database'];
    $user = $conf['mysql_user'];
    $pass = $conf['mysql_password'];
    $charset = 'utf8';

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $pdo = new PDO($dsn, $user, $pass, $opt);
?>


И файл showarticles.php - собственно вывод из БД:
<?php 
    include "/conn.php";
    function showart($start, $end){
        $data = $pdo->query('SELECT * FROM articles WHERE id BETWEEN '.$start.' AND '.$end);
        foreach($data as $rows) {
            foreach($rows as $val){
                print($val).' ';
            }
        print('</br>');
        }
    }
?>

При таком вызове из index.php:
<?php 
    include "/showarticles.php";
    showart(2,3);
?>

Происходит ошибка:
Notice: Undefined variable: pdo in C:\xampp\htdocs\myblog\showarticles.php on line 4
Fatal error: Call to a member function query() on null in C:\xampp\htdocs\myblog\showarticles.php on line 4
До того как стал использовать функцию для вывода вроде работало корректно.
Да и например такой вод код в index.php работает корректно:
<?php 
    require "./conn.php";
    require "./showarticles.php";
    $data = $pdo->query('SELECT * FROM articles WHERE id BETWEEN 2 AND 3');
        foreach($data as $rows) {
            foreach($rows as $val){
                print($val).' ';
            }
        print('</br>');
        }
    //showart(2,3);
?>

Подскажите кто разбирается, в чём тут дела? Понимаю что ошибка наверное весьма глупая
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
include "/conn.php";
include "/showarticles.php";

Скорее всего, пути должны быть относительными: ./conn.php.
Чтобы проще отлавливать проблемы такого рода используйте require, а не include - без этих файлов же ваше приложение работать в принципе не сможет, они обязательны для подключения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽