Zwei Mal sql-DB aufrufen -> funzt nicht
chimon
- php
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
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
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";