Hilfe bei PEAR!
Thomas
- datenbank
0 Cheatah0 Thomas0 Klaus Mock0 Thomas
Hallo zusammen..
leider fand ich im Archiv nichts und hoffe dass hier jemand vorbeischaut, der mir bei PEAR helfen kann.
Ich hab die Aufgabe, eine Datenbank zu Administrieren... nun gut. Es ist eine Oracle. Verbinung steht. Ich kann auch alles anzeigen lassen.
Jetzt will ich aber eine Eingabemaske machen, die zB nen Kunden sucht.
So... ich wollt das jetzt mal trocken machen und erstmal ohne die Eingabemaske arbeiten.
Mein Code sieht folgenermaßen aus:
<?
require_once 'DB.php';
$user = '---';
$pass = '********';
$db_name = 'PCE';
$dsn = "oci8://$user:$pass@$db_name";
$daba = DB::connect($dsn, true);
if (DB::isError($daba)) {
die ($daba->getMessage());
}
if($textfield != 0)
{
$oci = "select * from denic_handle where kunden like'CML'";
$result = $daba->query($oci);
while ($row = $result->fetchRow())
{
echo "<table width='800' border='1' cellspacing='0' cellpadding='0'>";
echo "<tr>";
echo "<td width=25%>";
echo $row[0];
echo "</td>";
echo "<td width=25%>";
echo $row[1];
echo "</td>";
echo "<td width=25%>";
echo $row[2];
echo "</td>";
echo "<td width=25%>";
echo $row[3];
echo "</td>";
echo "</tr>";
echo "</table>";
}
}
$daba->disconnect();
?>
das problem liegt hier:
$oci = "select * from denic_handle where kunden like'CML'";
Wie sag ich ihm, dass er alle kunden namens CML ausgibt? mache ich das so?
Ausserdem. Wenn ich es so mache gibt er mir den fehler, dass fetchRow() eine undefinierte Variable ist. Lass ich es weg, funktioniert alles...
Ich hoffe auf Hilfe :-)
Gruß, Thomas
Hi,
$oci = "select * from denic_handle where kunden like'CML'";
diese WHERE-Clause ist identisch mit "WHERE kunden = 'CML'", weil Du keinerlei Platzhalter wie '%' oder '_' einsetzt.
Wie sag ich ihm, dass er alle kunden namens CML ausgibt?
Wenn der Name 'CML' ist und nicht etwa 'Cml' oder 'CML ', sollte das exakt so gehen, ja.
Wenn ich es so mache gibt er mir den fehler, dass fetchRow() eine undefinierte Variable ist.
Das klingt entweder so, als gäbe es keinen Befehl dieses Namens, oder als sei das SQL-Statement syntaktisch nicht korrekt (heißen die Spalten etc. so?), so dass es kein sinnvolles Objekt gibt, auf das man mit fetchRow() zugreifen könnte.
Cheatah
Super! Danke für deine Hilfe! Ich habe nun das like='CML' berichtigt.
So der Fehler steckt dennoch in diesem fetchRow. Ich habe 3 Beispiel Seiten im Netz gefunden und ich müsste es eigentlich richtig haben. Auch Spalten und Namen sind korrekt...
Vielleicht gibts ja eine andere Funktion um nur BESTIMMTE daten abzurufen....
Würd mich freuen wenn mir jemand nen rat geben könnte, oder eine gute Doku auch in Buchform!
Gruß, Thomas
Hallo,
Ich habe nun das like='CML' berichtigt.
Hast Du Dir schon einmal die Mühe gemacht in eine SQL-Referenz im allgemeinen, oder eine für Oracle im spezziellen, zu sehen?
Entweder
FELD LIKE 'blablabla'
oder
FELD = 'blablabla'
Beachte auch, daß Leerzeichen ab und an notwendig sind, wie z.B. zwishcen LIKE und 'blablabla'.
So der Fehler steckt dennoch in diesem fetchRow. Ich habe 3 Beispiel Seiten im Netz gefunden und ich müsste es eigentlich richtig haben. Auch Spalten und Namen sind korrekt...
Es könnte durchaus auch sein, daß der Fehler vorher, bei
$result = $daba->query($oci);
schon passiert. Da Du aber keine Fehlerbehandlung durchführst (eine einfache Überprüfung von $result auf undef [1] würde schon mehr Klarheit bringen), ist es äußerst schwierig, festzustellen, was genau nicht funktioniert.
Vielleicht gibts ja eine andere Funktion um nur BESTIMMTE daten abzurufen....
Du brauchts keien andere Funktion, query() und ein richtiges SQL-Statement sind für die gestellte Aufgabe vollkommen richtig.
Sie gehören nur richtig angewandt.
Grüße
Klaus
[1] in Verbindung mit $daba->getMessage(), nehme ich mal an, aber ich kenne ja PHP nicht wirklich, geschweige denn dessen Oracle-Interface
Hallo!
Auch dir danke!!
Ja ich hatte mich vertan mit dem LIKE oben, das hab ich auch erst danach gemerkt...
Ich habe jetzt einfach mal meine gesamte Tabelle anzeigen lassen. Wenn es so wäre, dass bei
$result = $daba->query($oci);
schon ein Fehler passiert, würde die Tabelle nicht angezeigt werden... sie wird aber angezeigt. Also kanns daran schonmal nicht liegen... hmm ich bin mehr als ratlos..
Ausserdem versteh ich dann immernoch nicht, wieso er dann mein fetchrow() mit dieser fehlermeldung abspeist:
Fatal error: Call to undefined function: fetchrow() in /denic-handle/such.php on line 15
Aber das ja auhc nur, wenn ich oben
where kunden = 'CML'
ergänze... ansonsten nimmt er es an...
Ich bin offen für neue Ideen...
PS: Klar hab ich die MySQL Referenzen durch... auch ein wenig Oracle.. ich bin grad dabei.. aber ich find dennoch nix... und über Pear ist nicht grad viel zu finden ausser hier:
http://pear.php.net/manual/en/core.db.php
aber da wird das Problem nicht angesprochen...
Also danke nochmal
Gruß, Thomas