* @author Louis Lapointe * @link http://pmo.developpez.com/ * @since PhpMyObject v0.14 * @version $Revision: $ * @copyright Copyright (C) 2007-2008 Nicolas Boiteux * @copyright Copyright (C) 2008 Louis Lapointe * @license GPLv3 {@link http://www.gnu.org/licenses/gpl} * @filesource * */ /** * This class implements a MySqli driver. * * @package PhpMyObject * @subpackage PMO_Core */ class PMO_Dbms_Mysqli extends PMO_MyDbms { public function __construct($mysqllink = NULL) { if(isset($mysqllink)) $this->setDB($mysqllink); } public function connect(array $authdb){ $this->setDB(new mysqli($authdb['host'], $authdb['user'], $authdb['pass'], $authdb['base'])); if(!$this->getDB()) throw new Exception(mysqli_connect_errno()); } public function __destruct() { $this->getDB()->close(); } public function query($query){ PMO_MyLog::factory()->log($query); $this->result = $this->getDB()->query($query); if($this->result) return TRUE; else throw new Exception($query." ".$this->getDB()->error()); } public function fetchArray() { return $this->result->fetch_assoc(); } public function getTableDesc($table) { $sql = sprintf('DESC %s', addslashes($table)); $this->query($sql); while($dbresult = $this->fetchArray()){ $tmparray[] = array("Field"=>$dbresult['Field'], "Type" => $this->translateType($dbresult['Type']), "Null" => $dbresult['Null'], "Key"=>$dbresult['Key'], "Default"=>$dbresult['Default'], "Extra"=>$dbresult['Extra'], "Perm"=>"rw"); } return $tmparray; } public function getLastId() { return $this->getDb()->mysqli_insert_id(); } public function beginTransaction(){ $this->getDB()->autocommit(FALSE); } public function rollback(){ return $this->getDB()->rollback(); } public function commit(){ return $this->getDB()->commit(); } } ?>