在远离PHP编码10年之后,我将重新回到教程中。我发现事情已经发生了变化,PDO是连接MySQL的新标准。
我建立了小项目。我正在尝试构建自己的类数据库,并且事情全面横向,我不知道为什么。
所以这是我的数据库类:
<?PHP
$Db = new database;
class database
{
/////////////
//Attributs//
/////////////
private $db_host;
private $db_user;
private $db_pass;
private $db_name;
private $bdd;
/////////////////////
// internal process//
/////////////////////
private function activateDB()
{
$this->checkList();
$this->dbInitilisation();
$this->dbConnection();
}
////////////////////////
//Check Websiteconfig//
////////////////////////
private function checkList()
{
if(!file_exists('website-config.ini')){
die('missing configuration file.');
}
}
///////////
//Db init//
///////////
private function dbInitilisation()
{
// Load config file for database connection info
$config = parse_ini_file("website-config.ini");
$this->db_host=$config['db_host'];
$this->db_user=$config['db_login'];
$this->db_pass=$config['db_password'];
$this->db_name=$config['db_name'];
}
/////////////////
//Db connection//
/////////////////
private function dbConnection()
{
try
{
$this->bdd = new PDO('mysql:host='.$this->db_host.';dbname='.$this->db_name.';charset=utf8', 'root', '');
$this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
die('error '.$e);
}
}
public function dbQuery($user_query, $parameters)
{
$this->activateDB();
$query = $this->bdd->prepare($user_query);
$query->execute($parameters);
$query->fetch();
return $query;
}
}
?>
,以下是我的称呼方式:
$values[':user_id']='1';
$result=($Db->dbQuery('SELECT user_username FROM user WHERE user_id = :user_id',$values));
print_r($result);
当我没有使用pdo,并且正常地编写我的功能时,我得到了我想要的东西。现在,不再了。
有没有人知道我做错了什么?你对如何改进我的整体内容有什么评论吗?
PS:我来之前读过这里(就像这里:http://php.net/manual/fr/pdostatement.fetch.php(我认为我的问题可能是提取的类型,但是再次,当不在OOP时,我的代码运行正常。 )或者PHP: Database Connection Class Constructor Method,但这里的解决方案是继续使用其他代码库,而不是让我理解我实际上做错了什么。