【发布时间】:2019-05-30 04:13:07
【问题描述】:
index.php
<?php
require_once 'core/init.php';
DB::getInstance()->query("SELECT * FROM users");
在这个类中,我使用的是单例模式,它已成功连接到数据库。
DB.php
<?php
class DB{
private static $_instance = null;
private $_pdo, $_query, $_error = false, $results, $count = 0;
private function __construct(){
try{
$this->_pdo = new PDO('mysql:host='.Config::get('mysql/host') .';db='.Config::get('mysql/db'),Config::get('mysql/username'),Config::get('mysql/password'));
//echo "Connected";
}catch(PDOException $e){
die($e->getMessage());
}
}
public static function getInstance(){
if(!isset(self::$_instance)){
self::$_instance = new DB();
}
return self::$_instance;
}
public function query($sql){
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)){
// echo 'prepared statement';
if($this->_query->execute()){
echo 'do query';
}else{
echo 'did not execute';
}
}
}
}
现在的问题是当我在query() 中传递 sql 查询时,它属于 else 条件“未执行”。所以我的问题是为什么它不执行。 pdo 中是否存在与 mysql db 的兼容性问题,或者我做错了什么。
【问题讨论】:
-
我建议先创建一个工作示例,而不是先将其包装在一个类中。您还应该阅读如何在进行查询时检查错误。 TBH,我宁愿推荐使用久经考验的 db-library 而不是自己构建。