2010-08-24 53 views
1

我在我的日志中收到很多警告,例如: 2010-08-24 09:34:01警告:警告(2):mssql_num_rows():提供的参数不是有效的MS (C:\ xampp \ htdocs \ cake \ libs \ model \ datasources \ dbo \ dbo_mssql.php,第468行)中的SQL结果资源警告:警告(2):mssql_free_result ):提供的参数不是在[C:\ xampp \ htdocs \ cake \ libs \ model \ datasources \ dbo \ dbo_mssql.php,第180行中的有效MS SQL结果资源] 2010-08-24 09:34:01警告:警告(2):mssql_free_result():提供的参数不是[C:\ xampp \ htdocs \ cake \ libs \ model \ datasources \ dbo \ dbo_mssql.php,第180行中的有效MS SQL结果资源]在日志中有很多cakephp警告

这些警告刚刚覆盖我的日志文件并使它们几乎无用。 我抬起头,他们用@符号来抑制这些错误,例如: @mssql_free_result($ this-> results);

仍然在我的日志中显示有无论如何真正压制他们而不改变蛋糕代码?

UPDATE:

好,我看着这一点更 当我在调试模式下我不是这只是发生

,这是错误becous处理函数弗朗调试器有 是这样的:

if (error_reporting() == 0 || $code === 2048 || $code === 8192) { 
    return; 

} 

,并在正常生产的错误处理:

if ($code === 2048 || $code === 8192) { 
    return; 

} 

所以在生产它不检查是否使用error_reporting()被抑制

+1

听起来像你有消息,你应该*不*忽略。 – 2010-08-24 15:41:26

+0

如果这显然是一个可重现的问题,您应该在http://cakephp.lighthouseapp.com/上打开它的票证。 – deceze 2010-08-25 01:45:49

回答

0

错误一样,通常都是穷人数据库错误处理的结果。假设一个查询会成功,并且盲目地使用来自...的query()函数的返回值将导致类似的警告。 mssql_query()仅当有结果时才返回语句句柄。如果查询成功但是没有结果,则返回TRUE,并且出错时为FALSE

将true/false传递给后面的函数(如mssql_num_rows())将会吐出“not a valid ...资源”的错误/警告,因为......它们不是句柄。

换句话说,错误并不是真的在警告中指出的那一行,它在脚本的较早部分,无论执行查询的位置在哪里。