git-svn-id: http://xe-core.googlecode.com/svn/trunk@971 201d5d3c-b55e-5fd7-737f-ddc643e51545

This commit is contained in:
zero 2007-04-05 04:52:33 +00:00
parent 736d569538
commit 282eced0ac

View file

@ -11,6 +11,9 @@
var $handler = NULL; var $handler = NULL;
var $stmt = NULL; var $stmt = NULL;
var $bind_idx = 0; var $bind_idx = 0;
var $bind_vars = array();
var $debugDetail = true;
var $database = NULL; ///< database var $database = NULL; ///< database
var $prefix = 'zb'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능) var $prefix = 'zb'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
@ -132,6 +135,7 @@
$this->stmt = $this->handler->prepare($query); $this->stmt = $this->handler->prepare($query);
$this->bind_idx = 0; $this->bind_idx = 0;
$this->bind_vars = array();
} }
/** /**
@ -141,6 +145,7 @@
if(!$this->isConnected() || !$this->stmt) return; if(!$this->isConnected() || !$this->stmt) return;
$this->bind_idx ++; $this->bind_idx ++;
$this->bind_vars[] = $val;
$this->stmt->bindParam($this->bind_idx, $val); $this->stmt->bindParam($this->bind_idx, $val);
} }
@ -150,12 +155,15 @@
function _execute() { function _execute() {
if(!$this->isConnected() || !$this->stmt) return; if(!$this->isConnected() || !$this->stmt) return;
$this->bind_idx = 0;
$this->stmt->execute(); $this->stmt->execute();
if($this->stmt->errorCode() != '00000') { if($this->debugDetail && $this->stmt->errorCode()!='00000') debugPrint($this->query."\n".$this->stmt->errorCode()." : ".print_r($this->stmt->errorInfo(),true)."\n".print_r($this->bind_vars,true));
$this->setError($this->stmt->errorCode(),$this->stmt->errorInfo());
$this->bind_idx = 0;
$this->bind_vars = 0;
if($this->stmt->errorCode()!='00000') {
$this->setError($this->stmt->errorCode(),print_r($this->stmt->errorInfo(),true));
$this->stmt = null; $this->stmt = null;
return false; return false;
} }
@ -181,7 +189,7 @@
* @brief 1 증가되는 sequence값을 return * @brief 1 증가되는 sequence값을 return
**/ **/
function getNextSequence() { function getNextSequence() {
$query = sprintf("insert into %ssequence (seq) values ('0')", $this->prefix); $query = sprintf("insert into %ssequence (seq) values (NULL)", $this->prefix);
$this->_prepare($query); $this->_prepare($query);
$result = $this->_execute(); $result = $this->_execute();
return $this->handler->lastInsertId(); return $this->handler->lastInsertId();
@ -267,25 +275,17 @@
else if($index) $index_list[$index][] = $name; else if($index) $index_list[$index][] = $name;
} }
$this->begin();
$schema = sprintf('CREATE TABLE %s (%s%s) ;', $table_name," ", implode($column_schema,", ")); $schema = sprintf('CREATE TABLE %s (%s%s) ;', $table_name," ", implode($column_schema,", "));
$this->_prepare($schema); $this->_prepare($schema);
$this->_execute(); $this->_execute();
if($this->isError()) { if($this->isError()) return;
$this->rollback();
return;
}
if(count($unique_list)) { if(count($unique_list)) {
foreach($unique_list as $key => $val) { foreach($unique_list as $key => $val) {
$query = sprintf('CREATE UNIQUE INDEX IF NOT EXISTS %s (%s)', $key, implode(',',$val)); $query = sprintf('CREATE UNIQUE INDEX IF NOT EXISTS %s (%s)', $key, implode(',',$val));
$this->_prepare($query); $this->_prepare($query);
$this->_execute(); $this->_execute();
if($this->isError()) { if($this->isError()) $this->rollback();
$this->rollback();
return;
}
} }
} }
@ -294,14 +294,9 @@
$query = sprintf('CREATE INDEX IF NOT EXISTS %s (%s)', $key, implode(',',$val)); $query = sprintf('CREATE INDEX IF NOT EXISTS %s (%s)', $key, implode(',',$val));
$this->_prepare($query); $this->_prepare($query);
$this->_execute(); $this->_execute();
if($this->isError()) { if($this->isError()) $this->rollback();
$this->rollback();
return;
}
} }
} }
$this->commit();
} }
/** /**