Robert Marshall hace 9 años
padre
commit
6ddd69bd65
Se han modificado 1 ficheros con 28 adiciones y 25 borrados
  1. 28 25
      Model/DBObject.php

+ 28 - 25
Model/DBObject.php

@@ -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();
+			}
 		}
 	}