Есть ли у кого-нибудь функция PHP, которая, например, если существует mysql_error()
из-за ошибки MySQL, она не выведет ее?
Не выводя его, я имею в виду, скорее, это не показывает ошибку на живом сайте, поскольку я буду использовать ее с другой функцией, которая у меня будет, если бы у меня была функция ошибки MySQL.
Я просто нахожу это настолько раздражающим, что я делаю это сейчас:
$q = mysql_query("SELECT * FROM something");
// if error occurs
if(!$q) {
echo 'Error' . mysql_error();
} else {
// else no errors so continue
}
На некоторых моих веб-страницах видно, что у меня есть несколько запросов в script, и я хотел бы просто включить функцию в нижней части всего моего PHP-кода, и если ошибка MySQL возникает где-нибудь в моем script для функции, чтобы поймать ошибку вместо того, чтобы я делал кратные коду, указанному выше.
Таким образом, я могу сэкономить много ненужной работы и реализовать ее с помощью функции электронной почты.
Наиболее надежным решением является использование trigger_error()
. Таким образом, вы можете связать себя с системой обработки ошибок PHP, которая уже готова работать с средами разработки и производства.
$querySql = 'SELECT * FROM `foo`';
$queryResult = mysql_query($querySql);
if (!$queryResult) {
trigger_error('Unable to execute query: ' . $querySql, E_USER_NOTICE);
}
Конечно, самым удобным было бы сделать функцию украшения для mysql_query()
, которая автоматически вызвала ошибку. Принцип DRY всегда применяется.
Один из способов - написать свою собственную функцию, например sql_query, которая выглядит примерно так:
function sql_query($sql) {
$q = mysql_query($sql);
// if error occurs
if(!$q) {
//your error handling code
} else {
return $q;
}
}
Затем вы используете эту функцию везде, где хотите выполнить запрос sql.
Гораздо лучший способ - использовать PDO и исключения и т.д. в этом.
Создайте или используйте слой абстракции DB.
Используйте Исключения и поймайте их все. Затем у вас есть "настройка", чтобы включать или выключать отображение ошибок или еще лучше, записать их в файл.
Я думаю, что не понимаю, что вам нужно.
Если вы хотите "скрыть" ошибку при печати на странице, вы можете использовать префикс '@':
$q = @mysql_query ( "SELECT * FROM что-то" );
С "@" ошибки подавляются конечному пользователю.
mysql_error()
return)