PHP пытаются поймать для SQL, вставляют

У меня есть страница на моем веб-сайте (интенсивный трафик), который делает вставку на каждой загрузке страницы.

Мне любопытно из самого быстрого и самого безопасного пути к (зафиксируйте ошибку), и продолжите, если система не в состоянии сделать вставку в MySQL. Если я использую попытку/выгоду или умираю или что-то еще. Я хочу удостовериться, что вставка происходит, но если по некоторым причинам она не может я хотеть, чтобы страница продолжила загружаться так или иначе.

...
$db = mysql_select_db('mobile', $conn);
mysql_query("INSERT INTO redirects SET ua_string = '$ua_string'") or die('Error #10');
mysql_close($conn);
...
24
задан meme 16 December 2009 в 23:51
поделиться

3 ответа

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
25
ответ дан 28 November 2019 в 23:04
поделиться

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; 
}
5
ответ дан 28 November 2019 в 23:04
поделиться

Используйте любой метод, описанный в предыдущем посте, чтобы каким-то образом отловить ошибку 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) {....} не будет работать!

Примечание: Не напрямую связанный с вашим вопросом, но я думаю, что было бы намного лучше, если бы вы показывали что-то полезное для пользователя. Я бы никогда не вернулся на сайт, на котором отображается пустой экран или какое-либо загадочное сообщение об ошибке.

-1
ответ дан 28 November 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: