У меня есть страница на моем веб-сайте (интенсивный трафик), который делает вставку на каждой загрузке страницы.
Мне любопытно из самого быстрого и самого безопасного пути к (зафиксируйте ошибку), и продолжите, если система не в состоянии сделать вставку в MySQL. Если я использую попытку/выгоду или умираю или что-то еще. Я хочу удостовериться, что вставка происходит, но если по некоторым причинам она не может я хотеть, чтобы страница продолжила загружаться так или иначе.
...
$db = mysql_select_db('mobile', $conn);
mysql_query("INSERT INTO redirects SET ua_string = '$ua_string'") or die('Error #10');
mysql_close($conn);
...
Checking the documentation shows that its returns false
on an error. So use the return status rather than or die()
. It will return false if it fails, which you can log (or whatever you want to do) and then continue.
$rv = mysql_query("INSERT INTO redirects SET ua_string = '$ua_string'");
if ( $rv === false ){
//handle the error here
}
//page continues loading
if you want to log the error etc you should use try/catch, if you dont; just put @ before mysql_query
edit : you can use try catch like this; so you can log the error and let the page continue to load
function throw_ex($er){
throw new Exception($er);
}
try {
mysql_connect(localhost,'user','pass');
mysql_select_db('test');
$q = mysql_query('select * from asdasda') or throw_ex(mysql_error());
}
catch(exception $e) {
echo "ex: ".$e;
}
Используйте любой метод, описанный в предыдущем посте, чтобы каким-то образом отловить ошибку mysql.
Чаще всего это:
$res = mysql_query('bla');
if ($res===false) {
//error
die();
}
//normal page
Это также будет работать:
function error() {
//error
die()
}
$res = mysql_query('bla') or error();
//normal page
try {...} catch {Exception $ e) {....}
не будет работать!
Примечание: Не напрямую связанный с вашим вопросом, но я думаю, что было бы намного лучше, если бы вы показывали что-то полезное для пользователя. Я бы никогда не вернулся на сайт, на котором отображается пустой экран или какое-либо загадочное сообщение об ошибке.