2012-01-06 6 views
1

Я создаю приложение с PHP и SQL Server, я предпочитаю работать с журналами и иметь только некоторую общую информацию для пользователей в случае ошибки, например, номер ошибки, определенный мной в случае возможная известная ошибка и дата. но это дает мне множество проблем для отладки, я нашел PHP-журнал (php-erros.log) очень полезным, и все ошибки, которые я получаю, я могу видеть их довольно легко и быстро, не испортив код для отладки. Но у меня все еще есть проблема с SQL Server, я использую Microsoft SQL Server (10.50.1600.1), я нашел несколько файлов журнала (C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Log), но у них есть только основные ошибки, и я не вижу ошибок в PHP-запросах, есть ли способ активировать или легко проверить эти ошибки?Журнал ошибок запросов SQL Server

ответ

2

Ваш «sqlsrv_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический данное» ошибка не SQL Server один, но PHP ,

Можем ли мы увидеть ваш код?

Вы пытаетесь извлечь данные из запроса на отказ. Вот правильный способ работы и посмотреть, что случилось:

<?php 

$serverName = "serverName\instanceName"; 
$connectionInfo = array("Database"=>"dbName", "UID"=>"username", "PWD"=>"password"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 
if($conn === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

$sql = "SELECT FirstName, LastName FROM SomeTable"; 
$stmt = sqlsrv_query($conn, $sql); 


if($stmt === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
     echo $row['LastName'].", ".$row['FirstName']."<br />"; 
} 

sqlsrv_free_stmt($stmt); 

Этот фрагмент кода:

if($stmt === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

это то, что вам нужно: тестирование результат запроса, прежде чем пытаться взять его, и сброс ошибки , Если вы хотите отправить SQL-ошибку в журнал PHP, вы можете использовать функцию error_log.

1

Включите отчеты об ошибках PHP, поместите это в верхней части вашего скрипта:

ini_set('display_errors',1); 
error_reporting(E_ALL); 
+0

я не хочу ошибок PHP, с этим я получить на PHP-errors.log тот же: «sqlsrv_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический дал» то, что я хочу, это ошибка SQL без необходимости чтобы возиться с кодом, я хочу что-то вроде php-errors.log, но для MSSQL. Является ли это возможным? – TeraJL

+0

Я возьму это как нет. Я буду использовать в моем случае «sqlsrv_errors», чтобы проверить наличие ошибок, спасибо. – TeraJL

0

В этом разделе показано, как настроить драйверы sqlsrv и pdo_sqlsrv для ведения журнала: http://msdn.microsoft.com/en-us/library/cc296188.aspx. Вам также необходимо установить параметры log_errors и error_log в файле php.ini.

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