我在日志中收到很多警告,例如: 2010-08-24 09:34:01警告:警告(2):mssql_num_rows():提供的参数不是[C:\ xampp \ htdocs \ cake \ libs \ model \ datasources \ dbo中的有效MS SQL结果资源\ dbo_mssql.php,第468行] 2010-08-24 09:34:01警告:警告(2):mssql_free_result():提供的参数不是[C:\ xampp \ htdocs \ cake \ libs \ model \ datasources \ dbo中的有效MS SQL结果资源\ dbo_mssql.php,第180行] 2010-08-24 09:34:01警告:警告(2):mssql_free_result():提供的参数不是[C:\ xampp \ htdocs \ cake \ libs \ model \ datasources \ dbo中的有效MS SQL结果资源\ dbo_mssql.php,第180行]
这些警告只是覆盖我的日志文件并使它们几乎无用。 我抬起了线条,他们使用@符号来抑制这些错误,例如: @mssql_free_result($这 - >结果);
仍然显示在我的日志中无论如何真的压制它们而不改变蛋糕代码?
更新
好吧,我更多地了解了这一点 这只发生在我没有进入调试模式时这在调试器的错误处理函数中很明显 是这样的:
if (error_reporting() == 0 || $code === 2048 || $code === 8192) {
return;
}
并且在正常的生产错误处理中:
if ($code === 2048 || $code === 8192) {
return;
}
因此在生产中它不会检查error_reporting()是否被抑制
答案 0 :(得分:0)
这样的错误通常是数据库错误处理不当的结果。假设查询将成功并且盲目地使用来自..._ query()函数的返回值将导致类似的警告。 mssql_query()
仅在有结果时才返回语句句柄。如果查询成功但没有结果,并且TRUE
出错,它也将返回FALSE
。
将true / false传递给后面的函数(例如mssql_num_rows()
)会吐出“not a valid ... resource”错误/警告,因为,嗯......它们不是句柄。
换句话说,错误实际上不在警告中指示的行,它在脚本的前面,无论查询实际执行的地方。