chimon: Zwei Mal sql-DB aufrufen -> funzt nicht

Hallo in meiner seite wird zwei mal eine datenbank aufgerufen. Leider
bei mir ´kommt dann die fehlermeldung:
Fatal error: Call to a member function on a non-object in /home/www/wa224/html/menu.php on line 13

wird dort die variable "nid" nicht gefunden?!

erstes mal aufrufen:
<?php
include_once "include/mySql.class.php";

$db=new mySql($dbhost, $dbname , $dbuser, $dbpass);
$db->verbinde();
$db->query("SELECT titel, nid FROM test");

while ($db->next_Datensatz())
  { printf("<DD><A href="infoseite.php?nid=%d">%s</A>\n", $db->f("nid"),($db->f("titel")) );}?>

weiter unter wird nochmal abgefragt:

<?php

$db=new mySql($dbhost, $dbname , $dbuser, $dbpass);
$db->verbinde();

$ID=$HTTP_GET_VARS["nid"];

$db->query("SELECT * FROM $i_table WHERE nid=$ID");
$db->next_datensatz(); ?>

genutzte funktionen (mySql.class.php)
+++++++++++++++++++++++++++++++++++++++++++

function next_datensatz() {
    $this->strDatensatz = mysql_fetch_array($this->intQueryID);
    $this->intZeile  += 1;
    $this->intErrno = mysql_errno();
    $this->strError = mysql_error();

$stat = is_array($this->strDatensatz);
    if (!$stat && $this->auto_free) {
      mysql_free_result($this->intQueryID);
      $this->intQueryID = 0;
    }
    return $stat;
  }

function mySql ($host = "localhost", $db = "", $usr = "", $pwd = ""){
    $this->strHost = $host;
$this->strDatenbank = $db;
$this->strUser = $usr;
$this->strPasswort = $pwd;
  }

function verbinde() {
    if ( 0 == $this->intLinkID ) {
      $this->intLinkID=mysql_pconnect($this->strHost, $this->strUser, $this->strPasswort);
      if (!$this->intLinkID) {
        $this->halt("Link-ID == false, pconnect failed");
      }
      if (!mysql_query(sprintf("use %s",$this->strDatenbank),$this->intLinkID)) {
        $this->halt("cannot use database ".$this->strDatenbank);
      }

Weiss jemand warum das nicht läuft?

chimon

  1. habs mal so versucht...
    <?php
    include_once "include/mySql.class.php";
    mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db("$dbname");
    $abfrage = "SELECT titel, nid FROM test";
      $ergebnis = mysql_query($abfrage);
      while($row = mysql_fetch_object($ergebnis))
        {
        echo $row->titel;
        }
    ?>

    so klappt es. warum das andere nicht ging weiss ich immer noch nicht. chimon

  2. echo $begrüßung;

    Hallo in meiner seite wird zwei mal eine datenbank aufgerufen. Leider
    bei mir ´kommt dann die fehlermeldung:
    Fatal error: Call to a member function on a non-object in /home/www/wa224/html/menu.php on line 13

    Welches ist Zeile 13?

    wird dort die variable "nid" nicht gefunden?!

    Ich sehe keine Variable namens $nid in deinem Quelltext.

    Weiss jemand warum das nicht läuft?

    PHP und MySQL wissen da sicher einiges, was du sie bisher nicht gefragt hast oder das du dir nicht hast sagen lassen.

    Lass dir mit mysql_error() anzeigen, was MySQL zu beanstanden hatte, wenn einer der Funktionsaufrufe nicht geklappt hat.

    PHP wird gesprächiger, wenn man error_reporting auf E_ALL setzt. Da bekommt man dann Zugriffe auf nicht initialisierten Variablen angezeigt, die ja ein Folgefehler von anderen nicht beachteten Fehlern sein können.

    Weiterhin ist zu empfehlen, dass du sich mit Database Security besonders das Kapitel zu SQL Injection beschäftigst, denn diese Stelle

    $ID=$HTTP_GET_VARS["nid"];

    $db->query("SELECT * FROM $i_table WHERE nid=$ID");

    ist dafür anfällig.

    Außerdem ist $HTTP_GET_VARS veraltet. Wenn du nicht grade mit einer Version kleiner als 4.1.0 arbeitest, solltest du $_GET nehmen.

    echo "$verabschiedung $name";