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