2

使用 PHP Web 应用程序时,我遇到了 PDO::MYSQL_ATTR_MAX_BUFFER_SIZE 的致命错误,但仅限于非常罕见的托管计划。这是说这个常数不可用。如何检测到它不可用而不使用它?

我的意思是,我可以使用 if (!defined(...)) if/then 检查,但是在那些未使用 PDO 编译 MYSQL_ATTR_MAX_BUFFER_SIZE 的系统上,这仍然会出现致命错误吗?请注意,有一个关于 MYSQL_ATTR_MAX_BUFFER_SIZE 和 mysqlnd 的已知错误,在安装了 mysqlnd 的情况下它不会被编译。该错误被标记为“不会修复”。

4

1 回答 1

4

你没有defined()正确使用,是我的猜测。您需要为其提供一个字符串。

if( defined( 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE' ) ) // note the quotes
{
    // do something useful with PDO::MYSQL_ATTR_MAX_BUFFER_SIZE
}

PDO::MYSQL_ATTR_MAX_BUFFER_SIZE上面的示例在我的设置(PHP 5.3.20,其中未定义)中没有发出任何通知/警告/错误,使用error_reporting( E_ALL | E_STRICT ).

于 2013-01-30T04:08:04.743 回答