2017-02-15 9 views
1

Это именно то, что мне нужно:записывать все ошибки mysql в базу данных или сортировать?

<?php 
$conn = mysqli_connect($server, $buser, $pwd, $db); 

$query = $conn->query("mysql_query here"); 

if (!query) { 
    $error = $conn->error; 
    $log_error = $conn->query("INSERT INTO tab (log) VALUES ('$error')"); 
} 
?> 

Однако, это не работает, ошибка не представляется в дб.

Насколько эффективно использовать базу данных для регистрации ошибок, кажется единственным способом удовлетворения моих потребностей.

Что нужно: мне нужно регистрировать все ошибки из запросов независимо от типа и регистрировать их где-нибудь, которые можно просмотреть на частной веб-странице, доступной только для указанной учетной записи уровня с PHP, чтобы отобразить все эти ошибки ,

У меня уже есть все, что работает, составляют уровни и т.д., просто кажется, не может найти способ, чтобы войти в прошлом происходили ошибки на странице PHP в следующем формате:

account_who_caused_error || page_where_error_occured.php || error_message || datetime 

error_log не может быть использована из-за характер того, что мне нужно. так что же еще нужно сделать?

+0

Какой тип объекта '$ conn'? – Philip

+0

$ conn - это простое подключение к базе данных: $ conn = mysqli_connect ($ webserver, $ webuser, $ webpwd, $ webdb); –

+0

Кажется, плохая идея регистрировать ошибки базы данных в базе данных :-) Если вам нужно просмотреть журнал через веб-страницу, вы все равно можете просто зарегистрировать ошибки в текстовом файле и сделать этот файл доступным, или вы можете сохранить их в json или CSV, если структуры данных более сложны. – mickadoo

ответ

1

Вполне возможно, что переменная $error содержит одиночную кавычку и, следовательно, вызывает неправильный запрос. Спасаясь переменной $error может помочь:

$conn = mysqli_connect($server, $buser, $pwd, $db); 

$query = $conn->query("mysql_query here"); 

if (!query) { 
    $error = $conn->error; 
    $log_error = $conn->query("INSERT INTO tab (log) VALUES ('" . mysqli_real_escape_string ($error) . "')"); 
} 

Как уже отмечались в предыдущих комментариях, протоколирование ошибок базы данных в базе данных может быть обречены на провале. Если ваша база данных имеет проблемы, ошибки не будут регистрироваться.

+0

в таком случае, если вы знаете, как я могу сохранять журналы ошибок в файле, а затем сделать их доступными на странице php, но отформатирован в таблице для 1 строки ошибки = 1 строка и данные, отформатированные в столбцах? как тип ошибки, сообщение, дата-время и так далее? Является ли это возможным? –

+0

Вы можете использовать 'fputcsv', который будет выводиться в файл в формате CSV. Затем это можно было бы прочитать снова, используя 'fgetcsv'. См. Http://php.net/manual/en/function.fputcsv.php – Philip