DB-Zugriff aber Datenanzeige will nich - warum?

Kryptaesthesie

Kryptaesthesie

Aktives Mitglied
Thread Starter
Dabei seit
17.05.2004
Beiträge
576
Reaktionspunkte
6
Hallo.
Die Verbindung zur DB funktioniert, aber das auslesen der Datensätze will nich. Wo liegt der Hase begraben?
Ich bin Neuling und bin gerade ganz am Anfang und mein Chef will, dass ich mich da reinfuchse... :p

Code:
#!/usr/local/bin/php
<?php
        print "Content-Type: text/html\r\n";
        print "\r\n";
        print "\r\n";

        print "<HTML><BODY>";

        $db = pg_connect("host=xyz port=5432 dbname=vtune user=xuser password=");

        if ($db)
        {
            print "Verbindung hergestellt zu: " . pg_host($db) . "<br/>\n";
            $db_select = @MYSQL_SELECT_DB("vtuneres");
            $result = mysql_query("SELECT * FROM lists");
            $menge  = mysql_num_rows($result);
            echo "<b>$menge Datensätze gefunden<br></b>";
            while($row = mysql_fetch_row($result))
            {
                echo $row[0] . " - " . $row[1];
                echo "<br><br>";
            }
        }
        else
        {
            print pg_last_error($db);
            print "</BODY></HTML>";
            exit;
        }

        pg_close( $db );

        print "</BODY></HTML>";

?>

Die Daten kommen aus einer Postgre-DB. Wisst ihr wo dort noch ein Fehler sein könnte? Die Tabelle hat 2 Spalten.

MfG Kryp
 
ok, Fehler selber gefunden :)
Überall wo MySQL im Code stand, musst, weil es sich um eine Postgre-DB handelt, pg hin! Das war's schon!! :p


MfG Kryp
 
Na, da hätten wir ja lange suchen können :D

Kleiner Tipp, es gibt PHP-Tags im Forum:

(PHP)
Code
(/PHP) // nat. in eckigen Klammern. Dann sieht Dein Listing so aus:

PHP:
#!/usr/local/bin/php
<?php
print "Content-Type: text/html\r\n";
print "\r\n";
print "\r\n";
print "<HTML><BODY>";
$db = pg_connect("host=xyz port=5432 dbname=vtune user=xuser password=");
if ($db)
{
print "Verbindung hergestellt zu: " . pg_host($db) . "<br/>\n";
$db_select = @MYSQL_SELECT_DB("vtuneres");
$result = mysql_query("SELECT * FROM lists");
$menge  = mysql_num_rows($result);
echo "<b>$menge Datensätze gefunden<br></b>";
while($row = mysql_fetch_row($result))
{
echo $row[0] . " - " . $row[1];
echo "<br><br>";
}
}
else
{
print pg_last_error($db);
print "</BODY></HTML>";
exit;
}
pg_close( $db );
print "</BODY></HTML>";
?>

und ist schonmal besser lesbar. Rufst Du das Skript als CGI auf oder per Webserver? In letzterem Fall brauchst Du die erste Zeile mit dem PHP-Interpreterpfad nicht!
 
Noch ein Tipp:
Die ganzen Erfolgsvergleiche führen zu elend lang verschachteltem Code:

PHP:
if (db_connect)
{
  if (query)
  {
    while (result holen)
    {
    }
  }
  else
  {
    // keine query
  }
}
else
{
  // keine DB
}


übersichtlicher wird es mit Negativ-Abfragen:
PHP:
if (! DB-connect)
{
  print "Keine DB verfügbar- Abbruch";
  exit;
}

if (! $pg_query("SELECT *..."))
{
 print "Abfrage xyz gescheitert";
 exit;
}

while (results)
{

}

pg_close();
 
:) Da sage ich doch schon mal
PHP:
$Aussage == "Vielen";
echo $Aussage . "Dank!";


(War das denn wenigstens so richtig? :p



MfG der jetzt weiter PHP-lernende Kryp ;)
 
<haarspaltermodus>
Wenn Du am Ende von "Vielen" oder am Anfang von "Dank!" ein Leerzeichen einfügst sieht es besser aus. Um den "." Operator nach Möglichkeit keine leerzeichen
</haarspaltermodus>

Viel Spaß beim Lernen ;)
 
wegus schrieb:
Um den "." Operator nach Möglichkeit keine leerzeichen

Warum? PHP erlaubt beliebigen Whitespace um Operatoren. Es ist sogar sinnvoll, der besseren Lesbarkeit wegen.
 
Nogger schrieb:
Warum? PHP erlaubt beliebigen Whitespace um Operatoren. Es ist sogar sinnvoll, der besseren Lesbarkeit wegen.

Dem kann ich mich nur anschliessen. Was wäre wenn ich da überall kein Whitespace hätte. Da würde man ja nicht mehr durchsehen...

Für mich stellt sich auch die Frage. Warum?
 
Gut ich mag da etwas geplagt sein, aber ich habe schon erlebt, daß solche Ausdrücke eben nicht korrekt abgearbeitet wurden beim Punktoperator. Mag sein, daß das seit ettlichen PHP-Versionen wieder funktioniert. Gebranntes Kind ( ab PHP 3.0x) scheut das Feuer ;) Ich mache beim .-Operator nie whitespaces dazwischen, hab es aber auch seit Jahren nicht mehr anders probiert!
 
wegus schrieb:
Gut ich mag da etwas geplagt sein, aber ich habe schon erlebt, daß solche Ausdrücke eben nicht korrekt abgearbeitet wurden beim Punktoperator.

Nee, dann war der Fehler woanders. Du hast ihn unbemerkt durch etwas anderes korrigiert und es dann dem Löschen der Leerzeichen zugeschrieben.
 
Zurück
Oben Unten