sqlsrv_query 不会 return 错误的 T-SQL 查询
sqlsrv_query doesn't return false on faulty T-SQL query
我正在使用 sqlsrv 连接到 MSSQL 数据库。安全(且仅供少数人使用)Intranet 应用程序中的一项功能提供了一个框来编写 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 数据库。
建议?
我不确定是什么原因,可能是连接延迟了。我没有更改任何内容,但它现在可以正常工作了。
我正在使用 sqlsrv 连接到 MSSQL 数据库。安全(且仅供少数人使用)Intranet 应用程序中的一项功能提供了一个框来编写 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 数据库。
建议?
我不确定是什么原因,可能是连接延迟了。我没有更改任何内容,但它现在可以正常工作了。