下午好。我昨天开始使用 PDO,但遇到了一些问题。我正在创建扩展类,它不起作用,而且我找不到错误。
这是我的助手类的代码,用于工作女巫 PDO:
class EPDO extends PDO {
/** Some identificator of connection*/
public $db;
/**
* Creating new PDO connections
*/
public function __construct($dbhost, $dbname, $dbuser = 'root', $dbpass = '', $dbtype = 'mysql') {
$db = new PDO($dbtype . ':host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
}
/**
* Insert into database with using transaction (if operation failed the changes go before)
*/
public function insert($statement) {
$db->beginTransaction();
$status = $db->exec($statement);
if ($status) {
$db->commit();
} else {
$db->rollback();
}
}
}
这是不起作用的代码:
$stm = $db->prepare('SELECT id FROM `startups` WHERE id = :id');
$params = array(':id' => $child->id);
$ok = $stm->execute($params);
$row = $stm->fetch(PDO::FETCH_ASSOC);
在这段代码之前,我当然按以下方式调用连接:
require_once 'EPDO.php';
try {
$db = new EPDO('--server--', '--database--', '--user--', '--pass--');
}
catch (PDOException $err) {
echo "Chyba spojeni: " . $err->getMessage();
}
非常感谢你,对我的英语感到抱歉。
问题是你要延长PDO
类并重写构造函数,所有这些都无需调用构造函数。
此外,每次创建新对象时,您实际上都会创建两个数据库连接。
这应该有助于解决您的问题,并减少创建的连接:
class EPDO extends PDO {
/** Some identificator of connection*/
public $db;
/**
* Creating new PDO connections
*/
public function __construct($dbhost, $dbname, $dbuser = 'root', $dbpass = '', $dbtype = 'mysql') {
parent::__construct($dbtype . ':host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
}
/**
* Insert into database with using transaction (if operation failed the changes go before)
*/
public function insert($statement) {
$this->beginTransaction();
$status = $this->exec($statement);
if ($status) {
$this->commit();
} else {
$this->rollback();
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)