Журнал ошибок запросов SQL Server - PullRequest
1 голос
/ 06 января 2012

Я создаю приложение с 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 вопросы, есть ли способ активировать или легко проверить эти ошибки?

Ответы [ 3 ]

2 голосов
/ 06 января 2012

Ваш "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 голос
/ 06 января 2012

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

ini_set('display_errors',1); 
error_reporting(E_ALL);
0 голосов
/ 09 января 2012

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

...