@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);
?>

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

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

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

Похожие вопросы