Chris: DEDLFIX!!! - Alte DB Klasse: mysqli -> postgresql

Beitrag lesen

Hi.

Dedlfix hat mir mal geholfen eine Datenbank-Klasse zu schreiben.

So, nun steige ich aber auf PostgreSQL um und möchte kein ADO/PDO nutzen.
Also ich würde die Klasse gerne umschreiben, bzw. nur die MEthode db_query().

Ich habe folgendes Versucht, aber das will nicht:

  
/**  
	 * Query abarbeiten  
	 *  
	 * @param string $sql  ein SQL-Statement  
	 * @param mixed $asObject  false: Fetchen als Array  
	 *                         true: Fetchen als Objekt  
	 *                         string: Name der zu instantiierenden Klasse  
	 * @param array $objectParams  optionale Parameter @see mysqli_result::fetch_object()  
	 * @return array  Ergebnismenge als Array mit Arrays oder Objekten  
	 */  
	# Query ausführen  
	public static function db_query($sql, $asObject = false, $objectParams = null) {  
		  
		$result = array();  
		  
			if ($asObject) { // true oder string  
				if (is_string($asObject)) {  
					$className = $asObject;  
					if (!class_exists($className))  
						throw new Exception("class " . $className . " does not exist.");  
					} else { // kein Klassenname übergeben, Standard-Klasse verwenden lassen  
						$className = null;  
						$objectParams = null;  
					}  
				}  
				#echo $sql;  
				$pg = self::_getConnection();// das ist eine private Methode, die mit ein mysqli-Objekt mit aktiver Verbindung gibt.  
				$pgResult = pg_query($pg, $sql);  
				var_dump($pgResult);  
				  
				# Query Fehlgeschlagen  
				if (!$pgResult){ echo $sql."<br>";return false;}	  
				  
				# Query nicht fehlgeschlagen - R  
				if ($pgResult) {  
					if ($asObject) {  
						while ($row = pg_fetch_object($pgResult)){  
							$result[] = $row;  
						}  
					}else {  
						while ($row = pg_fetch_assoc($pgResult)){  
							$result[] = $row;  
						}  
					}  
					  
					// wird unbedingt benötigt, wegen MYSQLI_USE_RESULT @see mysqli::query()  
					pg_free_result($pgResult);  
					return $result;  
				}else{  
  
					# Betroffenen Datensätze  
					$affectedRows=pg_affected_rows($pgResult);  
					  
					# Query fehlgeschlagen  
					if($affectedRows === 0)  
					{  
						  
						# Falls es ein UPDATE-Query war und keine Felder verändert wurden  
						if(strpos(strtolower($sql),"update")!==false)  
						{  
							  
							if(pg_affected_rows($pgResult) > 0)// Es wurden Felder gefunden, nur nicht geändert -> true  
							{  
								return array(true, 0, 0);  
							}  
							else // Es wurden nichtmal Felder gefunden -> false  
							{  
								return array(false, 0, 0);  
							}  
						}  
						else  
						{  
							return array(false, 0, 0);  
						}  
					}  
					else # Query nicht fehlgeschlagen - UDI  
					{  
						return array(true, $affectedRows);  
					}  
				}  
			  
	}

Ich bekomme keine Ergebnisse geliefert =/. Hm. Leider scheint es keine Klasse zu geben wie MySQLi. Wie komme ich z.B. an die LastAI_ID ran?

Gruß, Chris