Forwarding query errors to inbox

0 views
Skip to first unread message

Vasanth Govind

unread,
Sep 20, 2007, 2:19:08 AM9/20/07
to IntelliBitz Technologies, learne...@googlegroups.com
debugging mysql query errors
look at the following php function ...
this will automatically sends the query error to our mail box
immediately if it occured.
this will help to fix the database issues.

instead of using this ..
$result = mysql_query("SELECT * FROM table");


use this
$result = do_query("SELECT * FROM table", __LINE__);

do_query is not php built in function its user defined function as
follows..
__LINE is a magic constant which is explained in the link:http://
in.php.net/manual/en/language.constants.predefined.php

function do_query($sql, $line) {

$client = ""; // Client Name
$email = ""; // Email to notify on error

$result = @mysql_query($sql);
$total = @mysql_num_rows($result);
if (@mysql_error() <> "") {
echo " <br><font face=\"Verdana\" size=\"1\"><small><b><p align=
\"center\">Sorry, there has been an unexpected database error. The
webmaster has been informed of this error.</p></b></small></font>";

// Error number

$error_message = "<table border=\"0\" cellpadding=\"3\" cellspacing=
\"1\" style=\"border: 1px solid #bbbbbb;\" bgcolor=\"#ffffff\" width=
\"80%\" align=\"center\"><tr><td align=\"right\" width=\"25%\"><font
face=\"Verdana\" size=\"1\"><small><b>Error Number:</b></small></
font></td><td width=\"75%\"><font face=\"Verdana\" size=
\"1\"><small>" . @mysql_errno() . "</small></font></td></tr>";

// Error Description

$error_message .= "<tr><td align=\"right\"><font face=\"Verdana\" size=
\"1\"><small><b>Error Description:</b></small></font></td><td><font
face=\"Verdana\" size=\"1\"><small>" . @mysql_error() . "</small></
font></td></tr>";

// Error Date / Time

$error_message .= "<tr><td align=\"right\"><font face=\"Verdana\" size=
\"1\"><small><b>Error Time:</b></small></font></td><td><font
face='Verdana' size='1'><small>" . date("H:m:s, jS F, Y") . "</small></
font></td></tr>";

// Client

$error_message .= "<tr><td align=\"right\"><font face=\"Verdana\" size=
\"1\"><small><b>Client:</b></small></font></td><td><font face=\"Verdana
\" size=\"1\"><small>" . $client . "</small></font></td></tr>";

// Script

$error_message .= "<tr><td align=\"right\"><font face=\"Verdana\" size=
\"1\"><small><b>Script:</b></small></font></td><td><font face=\"Verdana
\" size=\"1\"><small>" . $_SERVER["SCRIPT_NAME"] . "</small></font></
td></tr>";

// Line Number

$error_message .= "<tr><td align=\"right\"><font face=\"Verdana\" size=
\"1\"><small><b>Line:</b></small></font></td><td><font face=\"Verdana
\" size=\"1\"><small>" . $line . "</small></font></td></tr></table>";

// SQL

$error_message .= "<table border=\"0\" cellpadding=\"3\" cellspacing=
\"1\" style=\"border: 1px solid #bbbbbb;\" bgcolor=\"#ffffff\" width=
\"80%\" align=\"center\"><tr><td align=\"right\"><font face=\"Verdana
\" size=\"1\"><small><b>Query:</b></small></font></td><td><font face=
\"Verdana\" size=\"1\"><small>" . $sql . "</small></font></td></tr>";

$error_message .= "<tr><td align=\"right\" valign=\"top\" width=\"25%
\"><font face=\"Verdana\" size=\"1\"><small><b>Processes:</b></small></
font></td><td><font face=\"Verdana\" size=\"1\"><small>";

$result = @mysql_list_processes();
while ($row = @mysql_fetch_assoc($result)){
$error_message .= $row["Id"] . " " . $row["Command"] . " " .
$row["Time"] . "<br>";
}
@mysql_free_result($result);

$error_message .= "</small></font></td></tr></table>";

$headers = "From: \"MySQL Debug\" <" . $email . ">\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

//mail($email, "[MySQL Error] ". $client, $error_message, $headers);
die();
}
if ($_GET["debug"]=="1") {
echo "<div width=\"100%\" style=\"margin: 10px; margin-bottom: 0;
padding: 3px; border: 1px solid #ff0000; background-color: #ffffff;
font: 10px verdana; overflow: auto;\">".$sql."</div><div width=\"100%
\" style=\"margin: 10px; margin-top: 0; padding: 3px; border: 1px
solid #ff0000; background-color: #ff0000; font: 10px verdana; color:
#ffffff; font-weight: bold;\">" . $total . " rows found.</div>";
}
return $result;
}

Reply all
Reply to author
Forward
0 new messages