aus mysql-statements mach oracle-statements

abbuzze

Grünschnabel
Hallo zusammen,

bislang habe ich nur php mit mysql verwendet.
Nachdem jetzt die verbindung zu der Oracle Datenbank steht, möchte ich die Statements entsprechend ändern.
Nur irgendwie steh ich (als anfänger) dabei auf´m schlauch. Vielleicht kan mir jemand helfen!?

Meine Mysql-Statements sehen (exemplarisch) folgendermaßen aus:

<!---daten abfragen-->
$sql1=@mysql_query("SELECT COUNT(username) as result1 FROM datenbank");
$usersum=mysql_fetch_array($sql1);

<!---datenausgabe--->
php echo $usersum[result1];

wie sieht diese Abfrage, exemplarisch für die Oracle-Datenbank, aus?

Schon mal vielen Dank im Voraus!

Gruß
Heiko
 
Hallo, eine Funktionsreferenz mit Beispielen findest Du unter
--> http://de.php.net/oci8

Hier ein paar Codeschnipsel:
PHP:
// Connection aufbauen
$conn = @OCILogon("benutzername","kennwort","TNS");

// SQL-Statement zusammenstellen
$sql = "Select ELEFANT from AFRIKA";

// SQL-Anweisung ausführen
$stmt = OCIParse($conn, $sql);
OCIExecute($stmt);

// Alle Datensätze in ein Array schreiben
// (zurückgegeben wird die Anzahl der Datensätze)
// $arDatensaetze enthällt alle Daten
// $arDatensaetze["ELEFANT"][0] ist der erste Datensatz der Spalte ELEFANT
// $arDatensaetze["ELEFANT"][1] ist der zweite Datensatz der Spalte ELEFANT
// .. etc.
$anzahl = OCIFetchStatement($stmt, $arDatensaetze);

// Fehler ermitteln
$fehler = OCIError($stmt);

// Wenn Fehler Aufgetreten ist, Transaktion rückgängig machen
if ($fehler) {OCIRollback($conn);}

// Connection schließen
OCILogOff($conn);

snuu
 
Gibt sonst noch was ganz praktischen und zwar die klasse ADODB die wandelt das automatisch intern um und man muss der klasse nur sagen mit welchem datenbank typ sie verbunden ist... wär ne alternate dazu den ganzen code nochmal um zu schreiben damit er auf oracle läuft
 
klappt leider noch nicht. aber warum

Hallo zusammen,

ich hab jetzt auf Basis des oberen Codes versucht die Abfrage laufen zu lassen. Leider lief es nicht, und da ich leider eher ein großer Laie auf dem Gebiet bin brauch ich noch mal eure Hilfe.

Hier der Code:

<?php

// connect to database
$conn = @OCILogon("benutzername","passort","tns");

// build sql-statement
$sql = "SELECT COUNT(username) FROM tabelle AS result1";

// execute sql-statement
$stmt = OCIParse($conn, $sql);
OCIExecute($stmt);
OCIFetch($stmt);

// errorcheck
$fehler = OCIError($stmt);

// if error occurs, rollback transaction
if ($fehler) {OCIRollback($conn)};

echo OCIResult($stmt, $result1);
OCIFreeStatement($stmt);

// close connection
OCILogOff($conn);

?>

Kann ich das überhaupt mit dem "AS result1" in dem SQL-Statement machen, und wenn ja, wie gebe ich den Wert später aus?

Schon mal vielen Dank für die Hilfe (hoffentlich) ;-)

Gruß
Heiko
 
(untested!)
PHP:
<?php
if(!$conn = @OCILogon("benutzername","passort","tns")) {
  die('Konnte keine Verbindung zur Datenbank herstellen!');
}

$sql = "SELECT COUNT(username) as ANZAHL FROM tabelle"; 

$stmt = OCIParse($conn, $sql); 
OCIExecute($stmt); 

$anz = OCIFetchStatement($stmt, $arDatensaetze); 

if (!OCIError($stmt)) {
  for ($x = 0; $x < $anz; $x++) {
    echo $arDatensaetze["ANZAHL"][$x];
  }
} else {
  echo "SQL-Fehler!";
}

OCILogOff($conn);
?>

snuu
 
Zurück