【问题标题】:Unable to connect to database using PDO无法使用 PDO 连接到数据库
【发布时间】:2015-04-07 07:00:28
【问题描述】:

我是 PHP 编程新手,尝试使用 PDO 连接到数据库。但是在做错误时:

“第 5 行的 D:\xampp\htdocs\web\oop\index.php 中未找到类 'DB'”

请帮忙。”详细信息已经给出。在此先感谢。

config.php

    <?php
    class Config{
     public static function get($path = null)
    {
    if($path){
        $config = $GLOBALS['config'];
        $path = explode('/', $path);

        foreach($path as $bit)
        {
            if(isset($config[$bit]))
            {
                $config = $config[$bit];
            }
        }
        return $config;
     }
          } 
        }
      ?>

core/init.php

     require_once 'functions/sanitize.php';

     $GLOBALS['config'] = array(
    'mysql' => array(
    'host'=> '127.0.0.1',
    'username' => 'root',
    'password' => '',
    'db' => 'oop'
    ),
'remember' => array(
    'cookie_name' => 'hash',
    'cookie_expiry' => 604800
    ),
'session' => array(
    'session_name' => 'user'
    )
  );


    spl_autoload_register(function($class)
   {

require_once 'classes/' . $class . '.php';
 }
    )


 ?>

classes/DB.php

     <?php
    namespace application\libs;
    use POD;
    class DB
    {

        private static $_instance = null;
        private $_pdo,
                $_query,
                $_error = false,
                $_results,
                $_count = 0;


        private function __construct()
        {
            try{
                $this->_pdo = new POD('mysql:host=' .
                Config::get('mysql/host') . ';dbname=' .
                 Config::get('mysql/db'), Config::get('mysql/username'),
                     Config::get('mysql/password'));
            }catch(PDOException $e){
                die($e->getMessage());

            }
        }


        public static function getInstance()
        {
            if(!isset(self::$_instance)){
                self::$_instance = new DB();
            }

            return self::$_instance;
        }


    }



    ?>

index.php

    <?php
       require_once 'core/init.php';
       DB::getInstance();
    ?>

【问题讨论】:

  • 尝试\application\libs\DB::getInstance();
  • 试试 $this->_pdo = new POD('mysql:host='.Config::get('mysql/host').';username='.Config::get('mysql /username').';password='.Config::get('mysql/password').';dbname='.Config::get('mysql/db').';');
  • 您的自动加载器似乎找不到您的类,您需要尝试调试自动加载部分,尝试回显您正在获取的 $class 参数并查看它的路径
  • 您好,John,在 index.php 下使用“\application\libs\DB::getInstance();”时出现另一个错误。
  • 你好 anant kumar 你到底想问什么,请你解释一下。

标签: php pdo


【解决方案1】:

您的自动加载类的路径似乎错误,请尝试以下操作:

spl_autoload_register(function($class)
   {

require_once '/../classes/' . $class . '.php';
 }
    )

或者在需要文件时请使用绝对路径,这将始终确保您的文件能够加载。

spl_autoload_register(function($class)
   {

require_once __DIR__ .'/classes/' . $class . '.php';
 }
    )

【讨论】:

  • 您好 Fadey 感谢您的回复,但第一次回复收到与第 5 行的“D:\xampp\htdocs\web\oop\index.php 中未找到类 'DB' 相同的错误” " 并且由于第二个回复出现另一个大错误,如果您能提供更好的想法,将非常感谢您。
  • @Tapash 您应该在需要文件之前确切知道文件在哪里,如果不知道您的项目结构,我无法真正帮助您,所以您可以向我们展示您的结构,或者您可以尝试并弄清楚自己如何要求您的课程
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 2015-12-09
  • 2017-03-30
  • 2022-01-18
  • 2014-06-07
相关资源
最近更新 更多