2015-01-15 3 views
0

Я новичок в веб-разработке, поэтому, вероятно, есть что-то, что я делаю неправильно.PHP - Обработка ошибок при запросе mysql

Я использую webmatrix для разработки и игры с образцом StarterSite, который предоставляет webmatrix.

В одном из файлов php (header.php) есть запрос к mysql с использованием расширения mysqli. Я изменил имя таблицы на какую-то несуществующую таблицу, чтобы имитировать условие ошибки. Проблема заключается в следующем:

$statement->execute(); 

сценарий останавливается. Я вставил инструкцию echo после выполнения и эта строка эха не отображается на веб-странице. Однако, когда я исправляю имя таблицы, эхо-строка после выполнения отображается на веб-странице. Поэтому я думаю, что скрипт прекращает выполнение после выполнения, когда имя таблицы неверно. У меня есть два вопроса. Как остановить скрипт от остановки? Во-вторых, как точно знать, что сценарий перестает выполняться в каком-то конкретном заявлении?

Во второй части вопроса я проверил файл журнала и файл tracelog в папке IISExpress. Не упоминается никаких ошибок, возможно, из-за ошибки в MYSQL. Однако в моей папке MYSQL нет файла журнала, поэтому не уверен, как проверить журнал mysql.

Если я пропустил что-либо, сообщите мне.

С уважением, Tushar

+0

чтения 'mysqli' PHP раздел руководства, могут быть некоторые полезная информация. –

+0

Почему вы используете IIS в качестве веб-сервера при использовании PHP и MySQL, а не его соответствующих; просто любопытно? У меня были проблемы в прошлом с IIS с использованием PHP и MySQL, когда был интенсивный трафик. – unixmiah

+0

Не можете ли вы придумать уникальный (или, по крайней мере, наполовину интересный) заголовок для вашего вопроса? Также, пожалуйста, напишите только один вопрос на ..., э-э, вопрос! _ –

ответ

0

Вы должны прочитать о Mysqli обработки ошибок.

Основная погрешность обработки пример ООП:

if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

Процедурный:

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
0

Это зависит от того, что вы входите. В журнале ошибок вы можете определить, что регистрируется. Я думаю, что вы можете контролировать строгий режим ошибки в php.ini, который автоматически выдает ошибку в файл access_log или error_log или apache.

Хитрость заключается в использовании $ mysqli-> ошибки на каждом этапе запроса mysqli и подключении db, чтобы обеспечить правильное получение сообщений об ошибках, нужно ли отлаживать, улучшать код или делать это правильно.

Ниже приведен пример использования $ mysqli-> ошибки при запросе базы данных.

$result = $mysqli->query($query); 
if (!$result and $mysqliDebug) { 
// the query failed and debugging is enabled 
echo "<p>There was an error in query: $query</p>"; 
echo $mysqli->error; //additional error 
} 

Вы можете также использовать способ, в котором вы определяете ошибку MySQL, чтобы быть правдой в дб Conn

// define a variable to switch on/off error messages 
$mysqliDebug = true; 
// connect to your database 
// if you use a single database, passing it will simplify your queries 
$mysqli = @new mysqli('localhost', 'myuser', 'mypassword', 'mydatabase'); 
// mysqli->connect_errno will return zero if successful 
if ($mysqli->connect_errno) { 
echo '<p>There was an error connecting to the database!</p>'; 
if ($mysqliDebug) { 
// mysqli->connect_error returns the latest error message, 
// hopefully clarifying the problem 
// NOTE: supported as of PHP 5.2.9 
echo $mysqli->connect_error; 
} 
// since there is no database connection your queries will fail, 
// quit processing 
die(); 
} 

@ref: https://www.daniweb.com/web-development/php/code/434480/using-phpmysqli-with-error-checking

Смежные вопросы