【问题标题】:Turn mysql database to pdo class in php [closed]在php中将mysql数据库转换为pdo类[关闭]
【发布时间】:2014-11-05 05:02:11
【问题描述】:

我有一个数据表,我想创建 pdo 类来对其进行操作,并将数据表的字段转换为我可以访问它们的公共变量。

示例:

<?php 
 class personne
  {
      //code to get fields from datatable and turn them to variables
  }

 $p=personne::find(1); //find personne who have 1 as id
 echo $p->nom;
?>

以及存放变量值的字段的值

谢谢。

【问题讨论】:

  • 好的...有什么问题吗?你遇到过什么问题吗?
  • 如果findpersonne的静态方法,则不能使用new$p=new personne::find(1); 无论如何都会报错
  • 是的,我同意 Clément 我现在编辑的观点

标签: php mysql pdo frameworks


【解决方案1】:

这里是:

class Person {

  private static $instance = null;
  private $db;
  private static $data;

  private function __construct() {
    try {
      $pdo_param = array(
        PDO::ATTR_ERRMODE               => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE    => PDO::FETCH_ASSOC
      );
      $this->db = new PDO("mysql:host=YOUR_HOST_NAME;dbname=YOUR_DB_NAME", "YOUR_USERNAME", "YOUR_PASSWORD", $pdo_param);
    }
    catch(PDOException $e) {
      die($e->getMessage());
    }
  }

  private static function getInstance() {
    if (self::$instance == null) {
      self::$instance = new self();
    }
    return self::$instance;
  }

  public static function find($id) {
    try {
      $instance = self::getInstance();
      $result = $instance->db->query(YOUR_SQL_QUERY);
      self::$data = (object)$result->fetch();
      return self::$data;
    }
    catch(PDOException $e) {
      die($e->getMessage());
    }
  }

}

$p = Person::find(1);
echo $p->name;

【讨论】:

  • 抱歉没有工作它给出这个“致命错误:在第 31 行的 /home/touhfata/new/p/index.php 的对象上下文中使用 $this”
  • 修复了它,并对其进行了测试。它现在应该可以工作了。
  • 这种方式称为单例设计模式,常用于数据库连接类中,以确保该类只有一个实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2011-11-08
  • 2020-12-24
  • 2013-11-06
相关资源
最近更新 更多