Fatal error: Cannot access empty property in E:\www\knowledgebase\admin\db_mysql.php on line 99
<?php // db class for mysql // this class is used in all scripts // do NOT fiddle unless you know what you are doing
class DB_Sql_vb { var $database = "knowledgebase";
var $link_id = 0; var $query_id = 0; var $record = array();
var $errdesc = ""; var $errno = 0; var $reporterror = 1;
var $server = "localhost"; var $user = "root"; var $password = "";
var $appname = "vBulletin"; var $appshortname = "vBulletin (cp)";
function connect() { // connect to db server
if ( 0 == $this->link_id ) { if ($this->password=="") { $this->link_id=mysql_pconnect($this->server,$this->user); } else { $this->link_id=mysql_pconnect($this->server,$this->user,$this->password); } if (!$this->link_id) { $this->halt("Link-ID == false, connect failed"); } if ($this->database!="") { if(!mysql_select_db($this->database, $this->link_id)) { $this->halt("cannot use database ".$this->database); } } } }
function geterrdesc() { $this->error=mysql_error(); return $this->error; }
function geterrno() { $this->errno=mysql_errno(); return $this->errno; }
function select_db($database="") { // select database if ($database!="") { $this->database=$database; }
if(!mysql_select_db($this->database, $this->link_id)) { $this->halt("cannot use database ".$this->database); }
}
function query($query_string) { // do query
$this->query_id = mysql_query($query_string,$this->link_id); if (!$this->query_id) { $this->halt("Invalid SQL: ".$query_string); }
return $this->query_id; }
function fetch_array($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } $this->record = mysql_fetch_array($this->query_id);
return $this->record; }
function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } return @mysql_free_result($this->query_id); }
function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); $this->free_result($this->$query_id); return $returnarray; }
function data_seek($pos,$query_id=-1) { // goes to row $pos if ($query_id!=-1) { $this->query_id=$query_id; } $status = mysql_data_seek($this->query_id, $pos); return $status; }
function num_rows($query_id=-1) { // returns number of rows in query if ($query_id!=-1) { $this->query_id=$query_id; } return mysql_num_rows($this->query_id); }
function insert_id() { // returns last auto_increment field number assigned
return mysql_insert_id($this->link_id);
}
function halt($msg) { $this->errdesc=mysql_error(); $this->errno=mysql_errno(); // prints warning message when there is an error global $technicalemail; $message="Database error in $this->appname: $msg\n"; $message.="mysql error: $this->errdesc\n"; $message.="mysql error number: $this->errno\n"; $message.="Date: ".date("l dS of F Y h:i:s A")."\n"; $message.="Script: ".getenv("REQUEST_URI")."\n"; $message.="Referer: ".getenv("HTTP_REFERER")."\n";
if ($this->reporterror==1) { echo "\n<!-- $message -->\n";
echo "</td></tr></table>\n<p>There seems to have been a slight problem with the database.\n"; echo "Please try again by pressing the refresh button in your browser.</p>"; echo "An E-Mail has been dispatched to our <a href=\"mailto:$technicalemail\">Technical Staff</a>, who you can also contact if the problem persists.</p>"; echo "<p>We apologise for any inconvenience.</p>"; die(""); } } } ?>
glemte helt linje 99 ligger i denne funktion function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); linje 99-> $this->free_result($this->$query_id); return $returnarray; }
hm ud fra fejlbeskeden ser det nærmest ud som om det er tomt, men om det er $this->free_result eller $this->$query_id kan være lidt svært at finde ud af...
Forstår det heller ikke.. som om det bare slet ikke virker mere..
koden bliver udført via dette script $result = $DB_site->query_first("SELECT count(topic_id) as totaltopic FROM topic"); $totaltopics = $result[totaltopic]; $result = $DB_site->query_first("SELECT count(entry_id) as totalentry FROM entry"); $totalentries = $result[totalentry];
og har lige prøvet sql kaldne hvis de nu var forkert, men det er de ikke de virker..
Og du har også testet det der sker i den funktion du kalder i linie 99? ($this->free_result($this->$query_id);) det er næsten som om den returnerer null eller sådan noget... eller modtager null måske?
hmmm måske... Du kunne prøve at skrive mysql_free_result($this->query_id) or die(mysql_error()); i stedet for så kan du se om der bliver modtaget en tom query_id, ikke?
hm den er i hvert fald ikke tom, prøv at sætte mysql_free_result($this->query_id) or die(mysql_error()); ind lige efter print_r($this->query_id); så jeg kan se hvad der sker
function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } return mysql_free_result($this->query_id); }
function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); mysql_free_result($this->query_id) or die(mysql_error()); ind lige efter print_r($this->query_id); //$this->free_result($this->$query_id) ; return $returnarray; }
ikke for at lyder for dum, men kan du ikke vise mig hvordan funktionen
function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); mysql_free_result($this->query_id) or die(mysql_error()); ind lige efter print_r($this->query_id); //$this->free_result($this->$query_id) ; return $returnarray; }
Hvis det er nogen der kommer til at virke dum må det være mig fordi jeg ikke kan forklare mig ordentligt ;o) prøv den her: function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); print_r($returnarray); mysql_free_result($this->query_id) or die("<br>".mysql_error()); //$this->free_result($this->$query_id) ; return $returnarray; }
øh, ændrer lige lidt så det er til at finde fejlene... prøv lige den her i stedet for function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); print_r($returnarray); mysql_free_result($this->query_id) or die("<br>Fejl: ".mysql_error()); //$this->free_result($this->$query_id) ; return $returnarray; }
mystisk... Ingen fejl. endnu en gang en mindre ændring, prøv det her function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); print_r($returnarray); $this->free_result($this->$query_id) or die("<br>Fejl: ".mysql_error()); //$this->free_result($this->$query_id) ; return $returnarray; }
OK, så er det her vi skal til at rode: function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } return @mysql_free_result($this->query_id); } Prøv det her i stedet for: function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } $test = mysql_free_result($this->query_id) or "<br>Fejl: ".mysql_error()); return $test; }
hm endnu et forsøg, altså function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } $test = mysql_free_result($this->query_id) or "<br>Fejl: ".mysql_error()); print_r($test); return $test; }
hmm problemet ligger i den function som vi sidst har rodet med, men jeg kan bare ikke se hvor det går galt... med mindre.. prøv lige det her: function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; print_r($this->query_id); } $test = mysql_free_result($this->query_id) or "<br>Fejl: ".mysql_error()); print_r($test); return $test; }
function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; print_r($this->query_id); } $test = mysql_free_result($this->query_id) or "<br>Fejl: ".mysql_error(); print_r($test); return $test; }
function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); print_r($returnarray); $this->free_result($this->$query_id) or die("<br>Fejl: ".mysql_error()); //$this->free_result($this->$query_id) ; return $returnarray; }
linje 115 er den samme linje som før $this->free_result($this->$query_id) or die("<br>Fejl: ".mysql_error());
hm prøv det her en gang: function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); print_r($returnarray); $this->free_result(8); //$this->free_result($this->$query_id) ; return $returnarray; }
Jep, en mindre ændring mere function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); print_r($this->query_id); print_r($returnarray); $this->free_result($this->query_id); //$this->free_result($this->$query_id) ; return $returnarray; }
hm, det ser ud til at virke.. så skal der bare saniteres lidt. prøv de her to: function query_first($query_string) { // does a query and returns first row $this->query($query_string); $returnarray=$this->fetch_array($this->query_id); $this->free_result($this->query_id); return $returnarray; }
function free_result($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } return mysql_free_result($this->query_id); }
Prøv at sætte den her linie ind øverst i topicdisplay.php echo "Tester, tester";
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.