Avatar billede lakridserne Nybegynder
03. januar 2009 - 16:05 Der er 4 kommentarer og
1 løsning

Kan man teste på om der er valgt db korrekt i php?

Hej eksperter,

Jeg sidder lige og nørkler med et objektorienteret PHP-script, som jeg godt kunne tænke mig at få til at prøve og forbinde til databasen, og hvis der opstår fejl, så sende en e-mail til mig, og vise en mindre kryptisk fejlmeddelelse for brugeren. Det har jeg fået ordnet med mysql_connect(), men jeg mangler stadig det med mysql_select_db().
Med mysql_connect() klarede jeg det ved at teste om min db handler er sat til true. Hvis den ikke er skal den genere en e-mail, og sende den.
Herunder kopierer jeg mit script ind, som det ser ud indtil nu:

---database.inc.php---
<?php
class database
{
    private $db_handle;
   
    function _construct()
    {
        $this->db_handle = @mysql_connect("localhost", "bruger", "passwd");
        if(!$this->db_handle)
        {
            private $msg = "Hej navn,\n\n";
            private $msg .= "Du modtager denne mail fordi der opstod en fejl med at forbinde til databasen i $_PHP_SELF.\n";
            private $msg .= "Det skete d. " . date(d-m-Y) . " kl. " . date(H:i:s) . ".\n";
            private $msg .= "Fejlmeddelelsen var: " . mysql_error() . ".\n\n";
            private $msg .= "Hilsen webstedet.";
            mail("webmaster@boganmelderen.890m.com", "Fejl med databasen", $this->msg, "FROM: boganmelderen <webmaster@boganmelderen.890m.com>");
            print "Webstedet kunne desværre ikke forbinde til databasen. Webmasteren er blevet underrettet. Prøv igen senere.";
        }
        @mysql_select_db("min_db", $this->db_handle);
    }
?>
---slut---

Håber nogen kan hjælpe mig.
På forhånd tak for hjælpen.

/lakridserne
Avatar billede erikjacobsen Ekspert
03. januar 2009 - 16:12 #1
Du bør kunne

  if(@mysql_select_db("min_db", $this->db_handle)) {
    // ok
  } else {
    // fejl - send en mail
  }
Avatar billede lakridserne Nybegynder
03. januar 2009 - 16:29 #2
Tak for det.
Den vej rundt om udfordringen havde jeg ikke lige tænkt.
Smid et svar, så får du dine point...

/lakridserne
Avatar billede erikjacobsen Ekspert
03. januar 2009 - 16:48 #3
Jeg samler slet ikke på point, tak. Svar selv, og accepter dit eget svar.
Avatar billede lakridserne Nybegynder
03. januar 2009 - 16:53 #4
ok
Avatar billede jensgram Nybegynder
03. januar 2009 - 16:56 #5
Du skal så lige revidere din fejlhåndtering, for:

private $msg = "Hej navn,\n\n";
private $msg .= "Du modtager denne mail fordi der opstod en fejl med at forbinde til databasen i $_PHP_SELF.\n";

Er ikke valid syntaks. Fjern "private" - det giver ingen mening hér.
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