这个基本命令:
new mysqli($servername, $username, $password);
mysqli_connect($servername, $username, $password);
在PHP 8.2+中被阻止使用Uncaught Error: Class "mysqli" not found
或Uncaught Error: Call to undefined function mysqli_connect()
(取决于您使用的是哪一个),似乎是由于PHP 8.2: MySQLi can no longer be compiled with libmysqli(建议使用mysqlnd
库而不是libmysql
库)。
在cPanel,as explained here(以及过去的版本here)中绕过它的方法是检查通常关闭的nd_mysqli
,因为显然有mysqlnd
(默认情况下选中)是不够的。
但是,由于我的主机解释 “的原因“nd_mysqli”被禁用是因为该模块是不推荐”,是否有另一个PHP命令,是建议PHP 8.2+连接到MySQL数据库从PHP不会触发任何错误或需要任何特殊的设置?
1条答案
按热度按时间s8vozzvw1#
推荐的扩展名一直是PDO。但是,如果您的站点已经使用mysqli编写,则即使在PHP 8.2上也可以继续使用它。
CPanel是愚蠢的,他们愚蠢的配置已经迷惑了很多人。他们默认使用libmysql编译PDO和mysqli,并且只提供更好的mysqlnd变体作为前缀为nd_的非标准扩展。用户永远不应该使用libmysql的变体,在PHP 8.2中,甚至不可能在该库中提供mysqli。应始终启用的正确扩展名为:
我不知道他们在名称mysqlnd下提供了什么,因为它不是一个可以启用或禁用的扩展。在配置中提供此选项是荒谬的。
我不明白为什么cPanel不推荐nd_* 变体。
参见https://stackoverflow.com/a/73902084/1839439