2017-09-10 2 views
1

Wie fangen i Warnungen für mysqli_connect()wie Warnungen für mysqli_connect fangen()

Beispiel

if (!$connection2 = mysqli_connect($host, $username, $password, $name)){ 
    die('MySQL ERROR: ' . mysql_error()); 
} 

ODER

$connection2 = mysqli_connect($host, $username, $password, $name); 
if (!$connection2){ 
    die('MySQL ERROR: ' . mysql_error()); 
} 

Also versuche ich falsch, indem mysqli_connect() Methode zu testen Gastgeber, Benutzername usw. darin. aber wenn ich die falschen Variablen hineinsetze, z. B. setze ich hostlocal statt localhost. es gibt mir diese Fehler

Warnung: mysqli_connect(): php_network_getaddresses: getaddrinfo failed:
Eine solche Host bekannt ist.

Ich weiß, dass ich den falschen Host darin setze, aber ich möchte die Fehler in einer angemessenen Weise fangen. eine anständige Nachricht wäre perfekt wie:

Leider sind die Angaben, die Sie für die Verbindung eingegeben haben, falsch!

So, wie bekomme ich diese Meldung anstelle der Warnung, Dank

Antwort

2

Zum einen mysql_error() wird dir nichts geben. Es ist ein Teil einer anderen Bibliothek, mysql_, die nicht mit der neuen und verbesserten mysqli_ austauschen. Davon abgesehen können Sie festlegen, dass MySQLi Ausnahmen auslöst, die Sie dann abfangen können.

Die Warnungen würden immer noch protokolliert, wenn die Fehlerprotokollierung aktiviert ist (wie es sollte!). Aber Sie können den Fehler abfangen und etwas Benutzerfreundlicheres auf der Seite anzeigen, wenn die Verbindung fehlschlägt. Sie sollten nie tatsächliche Fehlermeldungen zu einem Live-Projekt anzeigen - in der Entwicklung ist es in Ordnung, aber nie auf jeder Live-Umgebung.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // Set MySQLi to throw exceptions 

try { 
    $connection2 = mysqli_connect($host, $username, $password, $name); 
} catch (mysqli_sql_exception $e) { 
    // $e is the exception, you can use it as you wish 
    die("Unfortunately, the details you entered for connection are incorrect!"); 
} 

Dies ist jedoch die gleiche Warnung einzuloggen würde als das, was Sie in das Protokoll, wenn es darum,

php_network_getaddresses: Getaddrinfo fehlgeschlagen: Name oder eine Dienstleistung nicht

bekannt

obwohl es gewonnen t auf der Seite angezeigt werden.

Sie können unterdrücken die Warnung durch (so wird es nicht angemeldet sein) @ Zugabe, aber ich würde es nicht empfehlen, es sei denn Sie ausdrücklich Ihre eigene Fehlerbehandlung/Reporting implementieren. Fehler sollten protokolliert werden.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // Set MySQLi to throw exceptions 

try { 
    $connection2 = @mysqli_connect($host, $username, $password, $name); 
} catch (mysqli_sql_exception $e) { 
    error_log($e->getMessage()); // Log the error manually 
    die("Unfortunately, the details you entered for connection are incorrect!"); 
}