我最近开始观看这一系列教程(http://www.youtube.com/playlist?list=PLfdtiltiRHWF5Rhuk7k4UAU1_yLAZzhWc)并遇到了编写DB类的问题。 它在第8个视频中。
我的查询功能似乎运作良好。我可以成功地连接到数据库,因为" connected"显示回声。但成功回声从未显示过..
DB.php:
<?php
class DB {
private static $_instance = null;
private $_pdo,
$_query,
$_error = false,
$_results,
$_count = 0;
private function __construct(){
try{
$db = new PDO('mysql:host='.config::get('mysql/host').';dbname='.config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));
echo '->Connected'.'<br />';
}
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, $params = array()){
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)) {
$x = 1;
if(count($params)){
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute()){
echo 'Success';
}
}
}
}
你能发现我的错误吗?试图找到我的函数不起作用的地方,我设法理解查询函数的第一个if语句未经验证。 在index.php中,我使用与视频中相同的行:
DB::getInstance()->query('SELECT username FROM users WHERE username = ?', array('alex'));
已成功创建所有数据库和表。我可以使用经典的try catch bloc和query方法访问和执行sql查询。 我特别不理解的是查询函数中的第一个if语句条件。
感谢您的时间!!
答案 0 :(得分:1)
您的PDO对象存储在构造函数中的局部变量($db
)中。将其分配给属性($_pdo
),因为您的query()
方法正在调用$this->_pdo->prepare()
。
$this->_pdo = new PDO('mysql:host='.config::get('mysql/host').';dbname='.config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));
答案 1 :(得分:0)
问题
wronge:_construct()
private function __construct(){ 尝试{ $ this-&gt; _pdo = new PDO(&#39; mysql:host =&#39; .Config :: get(&#39; mysql / host&#39;)。&#39 ;; dbname =&#39 ; .CONFIG ::得到(&#39;的mysql / DB&#39;), 配置::得到(&#39;的mysql /用户名&#39;), 配置::得到(&#39;的mysql /密码,&#39;) ); echo&#39; connected&#39 ;; } catch(PDOException $ e){ 死亡($ E-&GT;的getMessage()); } }
答案 2 :(得分:-1)
尝试复制/粘贴此内容。
<?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') . ';dbname=' . config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));
echo "Conectat";
} catch(PDOExeption $e) {
die($e -> getMessage());
}
}
public static function getInstance() {
if(!isset(self::$_instance)) {
self::$_instance = new DB();
}
return self::$_instance;
}
public function query($sql, $params = array()){
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)) {
$x = 1;
if(count($params)){
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
} }
if($this->_query->execute()){
echo 'Success';
}
}
}
}