Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpinfo说MySQLnd是主动驱动程序,还是我感到困惑_Php_Mysql_Pdo_Phpinfo_Mysqlnd - Fatal编程技术网

phpinfo说MySQLnd是主动驱动程序,还是我感到困惑

phpinfo说MySQLnd是主动驱动程序,还是我感到困惑,php,mysql,pdo,phpinfo,mysqlnd,Php,Mysql,Pdo,Phpinfo,Mysqlnd,当我尝试使用getAttribute函数时,我得到了以下错误:对非对象调用成员函数getAttribute()。看起来mysqlnd已启用,但我也不能使用get_result(),知道吗 最近这真的让我很困扰。在另一篇帖子上@inspire回答正确,但对我不起作用。你可以在这里找到: 当我回应这一点时: <?php $mysqlnd = function_exists('mysqli_fetch_all'); if ($mysqlnd) { echo 'mysqlnd enabl

当我尝试使用getAttribute函数时,我得到了以下错误:对非对象调用成员函数getAttribute()。看起来mysqlnd已启用,但我也不能使用get_result(),知道吗

最近这真的让我很困扰。在另一篇帖子上@inspire回答正确,但对我不起作用。你可以在这里找到:

当我回应这一点时:

<?php
$mysqlnd = function_exists('mysqli_fetch_all');

if ($mysqlnd) {
    echo 'mysqlnd enabled!';
}
当我尝试此操作时,会在非对象上调用成员函数getAttribute()


任何帮助都将不胜感激。提前感谢。

检查
mysqli\u fetch\u all
并不能真正描述您是否正在使用
mysqlnd
。相反,它说您已经启用了

MySQLi只是PHP早期版本中提供的
mysql
扩展的更新版本

mysql
扩展、
mysqli
扩展和
PDO-mysql驱动程序可以分别配置为使用
libmysqlclient或mysqlnd

此代码:

<?php
$mysqlnd = function_exists('mysqli_fetch_all');

if ($mysqlnd) {
    echo 'mysqlnd enabled!';
}

在phpinfo或代码中检查mysqlnd驱动程序本身是没有意义的


检查其他API也没有意义。如果所需的API基于mysqlnd而不是其他API,则必须检查。因此,如果需要PDO,检查mysqli是没有意义的


要检查PDO,您必须首先拥有一个PDO对象,正如错误消息所示

在发布权威声明之前,您肯定已经阅读了mysql_fetch_all手册页?@YourCommonSense“不附和任何内容表明您没有编译/启用/安装mysqli,并且可能正在使用较旧的mysql扩展。”。。。对我的意思是,检查mysqli_fetch_all将检查是否为mysqli启用了mysqlnd,但实际上并没有检查在所有可用PHP的MySQL客户端实现上是否启用了mysqld..可能重复
<?php
$mysqlnd = function_exists('mysqli_fetch_all');

if ($mysqlnd) {
    echo 'mysqlnd enabled!';
}
<?php
$hasMySQL = false;
$hasMySQLi = false;
$withMySQLnd = false;

if (function_exists('mysql_connect')) {
    $hasMySQL = true;
    $sentence.= "(Deprecated) MySQL <b>is installed</b> ";
} else 
    $sentence.= "(Deprecated) MySQL <b>is not</b> installed ";

if (function_exists('mysqli_connect')) {
    $hasMySQLi = true;
    $sentence.= "and the new (improved) MySQL <b>is installed</b>. ";
} else
    $sentence.= "and the new (improved) MySQL <b>is not installed</b>. ";

if (function_exists('mysqli_fetch_all')) {
    $withMySQLnd = true;
    $sentence.= "This server is using MySQLnd as the driver.";
} else
    $sentence.= "This server is using libmysqlclient as the driver.";

echo $sentence;
$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>', '<USERNAME>', 'PASSWORD');
if (strpos($pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), 'mysqlnd') !== false) {
    echo 'PDO MySQLnd enabled!';
}