|
@@ -44,11 +44,13 @@ class DBObject implements ISavableObject {
|
|
|
|
|
|
function __construct($table, $key, $id) {
|
|
|
$this->_table=$table;
|
|
|
+ $this->_keys=array();
|
|
|
+ $this->_ids=array();
|
|
|
|
|
|
if (is_array($key)&&is_array($id)) {
|
|
|
$this->_keys=$key;
|
|
|
$this->_ids=$id;
|
|
|
- } else {
|
|
|
+ } elseif ($id!=null && ($id!="" || (int)$id!=0)) {
|
|
|
$this->_keys=array($key);
|
|
|
$this->_ids=array($id);
|
|
|
}
|
|
@@ -82,32 +84,33 @@ class DBObject implements ISavableObject {
|
|
|
if (!isset(self::$_classFields[$class])) {
|
|
|
self::$_classFields[$class]=$PDO->query("DESCRIBE `{$this->_table}`")->fetchAll(PDO::FETCH_COLUMN);
|
|
|
}
|
|
|
+ if (count($this->_keys)>0){
|
|
|
+ $statementKey=$class.'_construct_'.$this->_table;
|
|
|
+ if (!isset(self::$PREPARED_STATEMENTS[$statementKey])) {
|
|
|
+ $fields=implode("`, `", self::$_classFields[$class]);
|
|
|
+ $sql="SELECT `$fields` FROM `{$this->_table}` WHERE".$this->GetWhereClause();
|
|
|
+ //var_dump($sql, $this->_ids);
|
|
|
+ self::$PREPARED_STATEMENTS[$statementKey]=$PDO->prepare($sql);
|
|
|
+ }
|
|
|
+ $prep=self::$PREPARED_STATEMENTS[$statementKey];
|
|
|
+ $prep->execute($this->_ids);
|
|
|
|
|
|
- $statementKey=$class.'_construct_'.$this->_table;
|
|
|
- if (!isset(self::$PREPARED_STATEMENTS[$statementKey])) {
|
|
|
- $fields=implode("`, `", self::$_classFields[$class]);
|
|
|
- $sql="SELECT `$fields` FROM `{$this->_table}` WHERE".$this->GetWhereClause();
|
|
|
- //var_dump($sql, $this->_ids);
|
|
|
- self::$PREPARED_STATEMENTS[$statementKey]=$PDO->prepare($sql);
|
|
|
- }
|
|
|
- $prep=self::$PREPARED_STATEMENTS[$statementKey];
|
|
|
- $prep->execute($this->_ids);
|
|
|
-
|
|
|
- $errorInfo=$prep->errorInfo();
|
|
|
- if ($errorInfo[0]!='00000'){
|
|
|
- Utils::var_dump_email($prep);
|
|
|
- throw new Exception($errorInfo[2]);
|
|
|
- }
|
|
|
+ $errorInfo=$prep->errorInfo();
|
|
|
+ if ($errorInfo[0]!='00000'){
|
|
|
+ Utils::var_dump_email($prep);
|
|
|
+ throw new Exception($errorInfo[2]);
|
|
|
+ }
|
|
|
|
|
|
- $record=$prep->fetch();
|
|
|
- if ($record!==false)
|
|
|
- foreach ($record as $key=> $value)
|
|
|
- $this->_fields[self::DBFieldToVariable($key)]=$value;
|
|
|
- else {
|
|
|
- foreach (self::$_classFields[$class] as $field)
|
|
|
- $this->_fields[self::DBFieldToVariable($field)]=null;
|
|
|
- //$this->_keys=array();
|
|
|
- $this->_ids=array();
|
|
|
+ $record=$prep->fetch();
|
|
|
+ if ($record!==false)
|
|
|
+ foreach ($record as $key=> $value)
|
|
|
+ $this->_fields[self::DBFieldToVariable($key)]=$value;
|
|
|
+ else {
|
|
|
+ foreach (self::$_classFields[$class] as $field)
|
|
|
+ $this->_fields[self::DBFieldToVariable($field)]=null;
|
|
|
+ $this->_keys=array();
|
|
|
+ $this->_ids=array();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|