Autor Zpráva
Seki
Profil
Rád bych vylepšil svůj stávající script na připojení do databáze a z důvodu přehlednosti jsem kód poupravil na:


    # get persistent conection
    $conn = mysql_pConnect($server, $user, $pass);
    mysql_select_db($base, $conn);
    mysql_query("USE `$base`");
    mysql_query("SET NAMES 'utf8'");
    
    # přesměrování na chybovou stránku
    if (mysql_errno() != 0)
    {
        header("location: error.php?e=0");
    }

jenže funkce mysql_errno() vrací jenom chybový kód z poslední provedené mysql funkce před voláním této funkce, neexistuje nějaká alternativa, jak provést přesměrování, když některá z těchto funkcí vrátí FALSE?

Děkuji
Luky
Profil
Obecně stačí třeba něco takového:
   $spojeni = @MySQL_Connect('localhost', 'root', 'password');
   @MySQL_Select_DB("databaze") or die(header("location: error.php?e=0"));
   mysql_set_charset("utf8");

Váši ukázku lze upravit i takto:
 # get persistent conection
    $conn = mysql_pConnect($server, $user, $pass);
    $select= mysql_select_db($base, $conn);
    $use=mysql_query("USE `$base`");
    $set=mysql_query("SET NAMES 'utf8'");
    
    # přesměrování na chybovou stránku
    if (!$conn || !$select || !$use || !$set)
    {
        header("location: error.php?e=0");
    }
Pokud některý z dotazů nevrátí TRUE, tak dojde k přesměrování na chybovou stránku.
Alphard
Profil
[#1] Seki
Co třeba vytvořit si vlastní obalovou funkci nad mysql_query(), která bude ošetřovat chyby?

[#2] Luky
Tak tohle je otřesné, já se snažím bojovat proti ošetřování chyb pomocí or die() a vy ještě vymyslíte dát tam header. To jsem ještě neviděl :-)
Tomáš H
Profil *
Pánové, opravdu zapomeňte, že nějaké "or die" existuje. To se začalo používat jen asi někde v nějakém manuálu pro názornost. V aplikaci ale nemá co dělat! Čím více "or die" z vašeho kódu smažete, tím jste lepší programátoři


function query($sql) {
    $result = mysql_query($sql);

    if(mysql_errno()) {
        # uloží chybu a sql dotaz
        error_log(mysql_errno() . ": $sql \n\n", 3, "/var/log/mysql-errors.log");
        header("location: error.php?e=0");
    }
    return $result;

}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: