sqlsrv_query не возвращает false при ошибочном запросе T-SQL

Я использую sqlsrv для подключения к базе данных MSSQL. Функция в защищенном (и доступном только для нескольких человек) приложении для интрасети предоставляет поле для написания кода T-SQL и выполнения их в базе данных. В данный момент я работаю над возможностью проверить данный запрос.

Сначала запрос проверяется на правильное намерение (например, если найдены INSERT, UPDATE, DELETE, SHOW, CREATE и т. Д., Запрос не будет выполнен). Если это удастся, я пытаюсь проверить запрос. Когда я предоставляю ошибочный запрос SQL, я все равно получаю ресурс в результате sqlsrv_query вместо false (как описано как ожидаемое поведение здесь: http://php.net/manual/en/function.sqlsrv-query.php). Примечание: запрос действительно ложный (смешное предложение ..), в SQL Server Management Studio запрос завершается неудачно, как и ожидалось.

Ниже моей функции testQuery(string $query):

public static function testQuery($query) {
sqlsrv_configure('WarningsReturnAsErrors', 1);
$statement = sqlsrv_query(self::$instance, $query);

if($statement === false) {
$errors = sqlsrv_errors(SQLSRV_ERR_ALL);

if(!is_null($errors)) {
return $errors;
}

return false;
}

return true;
}

Использование или отказ от sqlsrv_configure () не имеет значения. База данных, к которой я обращаюсь, — это база данных MSSQL 2005.

Предложения?

0

Решение

Я не уверен, что это было, может быть, задержка в соединении. Я ничего не изменил, но теперь он работает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]