За последние 24 часа нас посетили 18914 программистов и 1640 роботов. Сейчас ищут 968 программистов ...

проблема с подключением к БД через PDO и инклуд

Тема в разделе "PHP для новичков", создана пользователем saifuddin, 10 окт 2013.

  1. saifuddin

    saifuddin Новичок

    С нами с:
    5 окт 2013
    Сообщения:
    19
    Симпатии:
    0
    Всем привет.
    Сам я только начинаю заниматься php программированием. И, хотелось бы получить совет от тех, кто уже с этим сталкивался. Я хочу использовать MVC. Но, для начала не могу разобраться с подключением к БД. Пока делаю без ООП, так как с ним будет еще сложнее ошибку выявить.
    В отдельном файле у меня лежат константы для входа в БД. (Имя хоста, логин, пароль ... )
    В другом файле лежит само подключение к БД через PDO
    Код (PHP):
    1.  
    2.            <?php 
    3. include_once 'db_config.php';
    4.  
    5.      try {
    6.                    
    7.           $link = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_LOGIN , DB_PASSWORD);
    8.           $link->exec("set names utf8"); //Кодировка с БД
    9.           error_reporting(E_ALL);
    10.           echo "работает";        
    11.             $sql = "SELECT * FROM article";
    12.             $result = $link->query($sql);
    13.      
    14.                      
    15.          $link = null;
    16.  } catch (PDOException $e) {
    17.          print "Error: " . $e -> getMessage() . "<br/>";
    18.      
    19.  }       
    20.  
    21.             ?>
    И, собственно сам файл.

    Код (PHP):
    1. <?php include_once 'includes/db_connect.php'; ?>
    2. <!doctype html>
    3. <html lang="en">
    4. <head>
    5.     <meta charset="UTF-8">
    6.     <title>Задание 2</title>
    7. </head>
    8. <body>
    9. <?php
    10.             
    11.     echo "<h2>Вывод записей из результата по одной: </h2>";
    12.                      while ($table = $result->fetch(PDO::FETCH_ASSOC)) {
    13.                             echo "{$table['id']}. Автор: {$table['author']}, Заголовок: {$table['topic']}, Текст: {$table['text']}. <br/>";
    14.                         }
    15.  ?>
    16. </body>
    17. </html>
    В общем такая проблема:
    1. Если я оставлю $sql в index.php, то у меня ни чего не работает.

    Код (PHP):
    1. <?php include_once 'includes/db_connect.php'; ?>
    2. <!doctype html>
    3. <html lang="en">
    4. <head>
    5.     <meta charset="UTF-8">
    6.     <title>Задание 2</title>
    7. </head>
    8. <body>
    9. <?php
    10.          $sql = "SELECT * FROM article";
    11.             $result = $link->query($sql);   
    12.     echo "<h2>Вывод записей из результата по одной: </h2>";
    13.                      while ($table = $result->fetch(PDO::FETCH_ASSOC)) {
    14.                             echo "{$table['id']}. Автор: {$table['author']}, Заголовок: {$table['topic']}, Текст: {$table['text']}. <br/>";
    15.                         }
    16.  ?>
    17. </body>
    18. </html>
    А, другой файл выглядит так

    Код (PHP):
    1.            <?php 
    2. include_once 'db_config.php';
    3.  
    4.      try {
    5.                    
    6.           $link = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_LOGIN , DB_PASSWORD);
    7.           $link->exec("set names utf8"); //Кодировка с БД
    8.           error_reporting(E_ALL);
    9.           echo "работает";        
    10.             
    11.      
    12.                      
    13.          $link = null;
    14.  } catch (PDOException $e) {
    15.          print "Error: " . $e -> getMessage() . "<br/>";
    16.      
    17.  }       
    18.  
    19.             ?>
    На, экране выбивает, только слово "работает".

    Как мне произвести подключение к БД в отдельном файле и потом его вызывать через инклуд, а вот сам индекс файл, пусть он будет за модул представлен, мне в модуле нужно будет некой переменно присваивать запрос SQL и потом его выполнять. Но, я ни как не пойму, как мне это реализовать. Дайте пример или с моим помогите разобраться... Ну, ведь наверняка тут все элементарно, а, вот ни как не разберусь, что к чему!
     
  2. saifuddin

    saifuddin Новичок

    С нами с:
    5 окт 2013
    Сообщения:
    19
    Симпатии:
    0
    нужно было убрать $link = null; и все заработает.