Avatar billede akki Nybegynder
18. maj 2006 - 12:34 Der er 53 kommentarer

For denne fejl, men kan ikke se hvorfor??

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";

    @mail ($technicalemail,"$this->appshortname Database error!",$message);

    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("");
    }
  }
}
?>
Avatar billede akki Nybegynder
18. maj 2006 - 12:35 #1
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;
  }
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 12:43 #2
kunne det være fordi den ikke har fundet noget og derfor ikke har noget den kan frigive?
Avatar billede akki Nybegynder
18. maj 2006 - 12:45 #3
hele siden fryser bare, som om den ikke virker.
har bare kopiet hele dette script ind fra en gammel server.
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 12:46 #4
Har du tjekket om der er noget i databasen og at du har skrevet de rigtige oplysninger?
Avatar billede akki Nybegynder
18. maj 2006 - 12:50 #5
har kopiet hele db over fra den gamle server.

acl        1 InnoDB latin1_swedish_ci 16,0 KB -
attachment        30 InnoDB latin1_swedish_ci 16,0 KB -
bbcode        6 InnoDB latin1_swedish_ci 16,0 KB -
entry        243 InnoDB latin1_swedish_ci 304,0 KB -
replace_vars        1 InnoDB latin1_swedish_ci 16,0 KB -
template        3 InnoDB latin1_swedish_ci 16,0 KB -
topic        69 InnoDB latin1_swedish_ci 16,0 KB -
user        1 InnoDB latin1_swedish_ci 16,0 KB -
usergroup        1 InnoDB latin1_swedish_

ser også ud til deer ligger en masse i db

serveren er en win2003 med nyeste php og sql
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 13:29 #6
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...
Avatar billede akki Nybegynder
18. maj 2006 - 13:32 #7
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..
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 13:37 #8
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?
Avatar billede akki Nybegynder
18. maj 2006 - 13:38 #9
er ikke helt med, kan jeg på nogen måde teste det.???
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 13:41 #10
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?
Avatar billede akki Nybegynder
18. maj 2006 - 13:41 #11
hvis nogen kan hjælpe eller noget, så ligger jeg her et link til en rar fil indeholdene hele knowledgebasen.
http://130.227.200.51/knowledgebase.rar
Avatar billede akki Nybegynder
18. maj 2006 - 13:44 #12
hmm.. kommer med samme fejl.. mærkeligt..
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 14:34 #13
Når du prøver det jeg skriver? hm prøv at udskrive $this->query_id hvis ikke den skriver noget må du helt op hvor du først bruger den var.
Avatar billede akki Nybegynder
18. maj 2006 - 14:48 #14
hvordan ville du få den skrevet ud,.. hvad skal jeg skrive og hvorhenne..
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 14:50 #15
du kan prøve print_r($this->query_id); istedet for det der står på linie 99
Avatar billede akki Nybegynder
18. maj 2006 - 14:53 #16
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:01 #17
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
Avatar billede akki Nybegynder
18. maj 2006 - 15:05 #18
skal det se sådan ud:


  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;
  }
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:07 #19
du skal lige fjerne det -> ind lige efter print_r($this->query_id);
Avatar billede akki Nybegynder
18. maj 2006 - 15:07 #20
ved ikke hvorfor. men efter jeg skrev som ovenfor for jeg denne fejl

Parse error: syntax error, unexpected T_STRING in E:\www\knowledgebase\admin\db_mysql.php on line 100
Avatar billede akki Nybegynder
18. maj 2006 - 15:08 #21
forstår det ikke lgie.. hvor skal jeg fjerne ->
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:10 #22
det er en henvisning til det der står lige efter! altså du skal fjerne det her "ind lige efter print_r($this->query_id);"
Avatar billede akki Nybegynder
18. maj 2006 - 15:12 #23
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;
  }

skal se ud, fjerne det som ikke skal være der.
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:16 #24
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;
  }
Avatar billede akki Nybegynder
18. maj 2006 - 15:17 #25
så er den sat ind.. resultatet kan ses på samme side som før

http://130.227.200.51/knowledgebase/
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:20 #26
ø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;
  }
Avatar billede akki Nybegynder
18. maj 2006 - 15:21 #27
så har jeg lagt den ind og uploadet den
Avatar billede akki Nybegynder
18. maj 2006 - 15:22 #28
kan ikke se nogen fejl.. hmmmm..
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:24 #29
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;
  }
Avatar billede akki Nybegynder
18. maj 2006 - 15:25 #30
nu kommer fejlen.. he he
Avatar billede akki Nybegynder
18. maj 2006 - 15:25 #31
linje 102 er:

  $this->free_result($this->$query_id) or die("<br>Fejl: ".mysql_error());
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:29 #32
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;
  }

husk nu at kigge på hvad for en function det er!
Avatar billede akki Nybegynder
18. maj 2006 - 15:33 #33
ja.. samme fejl..
Avatar billede akki Nybegynder
18. maj 2006 - 15:34 #34
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;
  }
Avatar billede akki Nybegynder
18. maj 2006 - 15:35 #35
skal lige kører hjem nu, men er online igen om små 25 min.. altså ca. kl 16
Avatar billede sw_red_6 Nybegynder
18. maj 2006 - 15:36 #36
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;
  }
Avatar billede akki Nybegynder
19. maj 2006 - 08:51 #37
har lige tilføjet koden her til morges.

for stadig fejl

http://130.227.200.51/knowledgebase/
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 10:10 #38
Hvad er det der står på linie 114?
Avatar billede akki Nybegynder
19. maj 2006 - 10:13 #39
$this->free_result($this->$query_id) or die("<br>Fejl: ".mysql_error());
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 10:18 #40
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;
  }
Avatar billede akki Nybegynder
19. maj 2006 - 10:22 #41
så har jeg rettet det..
fejlen siger nu sådan:

Resource id #8Array ( [0] => 69 [totaltopic] => 69 )
Fatal error: Cannot access empty property in E:\www\knowledgebase\admin\db_mysql.php on line 115
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 10:23 #42
hmm linie 115 er inde i en function, ikke?
Kan du ikke lige kopiere den herind engang så jeg kan se hvordan den ser ud nu
Avatar billede akki Nybegynder
19. maj 2006 - 10:29 #43
sådan ser de to funktioner ud som vi bruger.


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());
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 11:01 #44
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;
  }
Avatar billede akki Nybegynder
19. maj 2006 - 11:03 #45
så for pokker.. nu kom der nogle fejl he he

http://130.227.200.51/knowledgebase/
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 11:08 #46
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;
  }
Avatar billede akki Nybegynder
19. maj 2006 - 11:11 #47
så er den blevet tilføjet..

hvis det er, så kan jeg også træffes via msn
akkidesign@hotmail.com
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 11:25 #48
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);
  }
Avatar billede akki Nybegynder
19. maj 2006 - 11:28 #49
hmm igen fejl længere.. men nu sker der bare ingen ting. he he...
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 12:56 #50
Hvilket udfra hvad jeg kan se er et godt tegn. Der er ikke nogen steder i koden jeg kan se hvor der står hvad der skal selectes fra databasen
Avatar billede akki Nybegynder
19. maj 2006 - 12:58 #51
min index.php som bliver kaldt ser sådan ud.

<?php

if(!$action) $action="showtopics";
$nocache=1;
// Include files
require("global.php");
//eval("\$footer = get_template(\"footer\");");
  $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];
  $topicjump = make_topic_select("topicid",-1,"[top]");
  eval("\$topicjumpform = do_replace(\"".get_template("topicjumpform")."\");");
  eval("\$welcometext = do_replace(\"".get_template("welcometext")."\");");
  eval("\$headerlinks = do_replace(\"".get_template("headerlinks")."\");");
  eval("\$headinsert = do_replace(\"".get_template("headinsert")."\");");
  eval("\$styleinsert = do_replace(\"".get_template("styleinsert")."\");");
  eval("\$header = do_replace(\"".get_template("header")."\");");
  eval("\$footer = do_replace(\"".get_template("footer")."\");");

if ($action=="bbcode") {

  eval("echo do_replace(\"".get_template("bbcode")."\");");

}

if ($action=="help") {

  eval("echo do_replace(\"".get_template("help")."\");");

}


if($action=="showtopics") {
  $topicid=0;
 
  // Make topicbit
  if($kbtitle)
    $topicpath=$kbtitle;
  else
    $topicpath="top";
  $topicdisplaybits = "";
  $result=$DB_site->query("select * from topic where parent_id IS NULL order by topic");
  if($DB_site->num_rows($result)) {
      while($row=$DB_site->fetch_array($result)) {
          $topic_id = $row[topic_id];
          $topic = $row[topic];
          $description = $row[description];
        $countentries = $DB_site->query_first("SELECT count(entry_id) as numentry FROM entry WHERE topic_id=$topic_id");
        $numentry = $countentries[numentry];
        $lastaddedentry = $DB_site->query_first("SELECT date_added FROM entry WHERE topic_id=$topic_id ORDER BY date_added desc LIMIT 1");
        if(!$lastaddedentry[date_added])
            $lastdate="never";
        else
            $lastdate = date("Y-m-d H:i",strtotime($lastaddedentry[date_added]));
        eval("\$topicdisplaybits .= do_replace(\"".get_template("topicdisplaybit")."\");");
      }
  }
 
  eval("\$topicbuttonadd = do_replace(\"".get_template("topicbuttonadd")."\");");
  eval("\$topicbuttons = do_replace(\"".get_template("topicbuttons")."\");");
  eval("\$entrybuttonadd = do_replace(\"".get_template("entrybuttonadd")."\");");
  eval("\$entrybuttons = do_replace(\"".get_template("entrybuttons")."\");");
  eval("\$topicheader = do_replace(\"".get_template("topicheader")."\");");
  eval("\$topicdisplay = do_replace(\"".get_template("topicdisplay")."\");");
  eval("echo do_replace(\"".get_template("kbhome")."\");");
}
?>
Avatar billede akki Nybegynder
19. maj 2006 - 13:01 #52
men intet ser ud til at kører har lige prøvet denne

http://130.227.200.51/knowledgebase/topicdisplay.php?action=showentry&entryid=282

kommer ingen data frem
Avatar billede sw_red_6 Nybegynder
19. maj 2006 - 15:38 #53
Prøv at sætte den her linie ind øverst i topicdisplay.php
echo "Tester, tester";
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester