Avatar billede tvilling53 Seniormester
24. april 2017 - 18:02 Der er 2 kommentarer og
1 løsning

Behandling af MYSQLI- fejlmedelelser

Hej,
Jeg har et problem som består i at programmet skulle kunne fortsætte selv om der kommer en fejlmedelelse.
Der bruges følgende sætning til søge selv omjeg ved at tabellen ikke eksistere:

if(!($stmt=$mysqli->prepare('SELECT * FROM `'.$tabel.'` WHERE aar =? && `'.$kol1.'`=?')))
{    echo "<br>Prepare failed i HENT_DATAx i START_SQL; <br>:(".$mysqli->errno .")" .$mysqli->error;}

Dette giver, som forventet, en fejl : (1146)Table' database.table' doesn't exist.
Kan det undersøges om tabellen eksisterer inden der søges i den?? eller hvordan behandles fejlkoden så programmet ikke går død.
Håber at der en der kan hjælpe mig med en løsning..

Hilsen TV
Avatar billede arne_v Ekspert
24. april 2017 - 18:41 #1
Du kan teste paa om tabellen eksisterer med:

SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ?
Avatar billede arne_v Ekspert
24. april 2017 - 18:43 #2
Generelt boer du nok bruge logik a la:

function hentdata
      hent data
      hvis fejl saa
            log fejl
            returner tom data
      ellers
            returner hentede data
Avatar billede tvilling53 Seniormester
25. april 2017 - 14:41 #3
Tak for hjælpen, løsningen blev:
if(!($stmt=$mysqli->prepare('SELECT * FROM `'.$tabel.'` WHERE aar =? && `'.$kol1.'`=?')))//WHERE dato >2015-11-12
        {    echo "<br>Prepare failed i HENT_DATAx i START_SQL; <br>:(".errorhandler($mysqli->errno) .")" .$mysqli->error;}

unction errorhandler($fejl)
  {
        switch ($fejl) {
        case 1146:
            Eksekverbar code
            break;

        default:
            break;
    }
   
Hilsen TV
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

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