繁体   English   中英

致命错误:在运行5.4.x的主机上调用未定义方法mysqli_stmt :: get_result()

[英]Fatal error: Call to undefined method mysqli_stmt::get_result() On host running 5.4.x

在我的测试环境中,此功能可以正常工作。 但是当我在虚拟主机上尝试返回此错误。 Fatal error: Call to undefined method mysqli_stmt::get_result()

我知道您需要mysqlnd驱动程序。 但是版本5.4.x Source会自动支持它。 但是我的主机甚至安装了较新版本的PHP。 所以我不明白为什么它不起作用。

Test environment:
PHP: 5.4.12 
MySQL: 5.6.12

Webhost (doesnt work):
PHP: 5.4.37
MySQL: 5.5.42-cll

我该如何解决这个问题? 是否有某种手动安装mysqlnd驱动程序? 还是与MySQL版本有关。

编辑:我在我的虚拟主机中放置了一个测试文件,并且看来get_result()函数不可用。

<?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 . "<br>";


$db = new PDO('mysql:host=localhost;dbname=xxx', 'xxx', 'xxx');
if (strpos($db->getAttribute(PDO::ATTR_CLIENT_VERSION), 'mysqlnd') !== false) {
    echo 'PDO MySQLnd enabled!'. "<br>";
}
else {
    echo 'Not enabled'. "<br>";

}

if (function_exists('get_result')){
    echo "get result() works". "<br>";
}
else {
    echo "nope result() doesnt work". "<br>";
}

phpinfo();


$arr = get_defined_functions();

print_r($arr);

您可以在此处查看结果: 我的主机上的“测试”页面

我将联系我的托管服务提供商。 但我想知道是否还有其他解决方案/解决方法

编辑:所以我的托管服务提供商无法帮助我。 他们不想只为我更改mysqli服务器。 所以我改用PDO而不是MySQLi,这有点烂,因为我必须重写很多:(。

检查您的php.ini。 您需要启用mysqli dll

extension=php_mysqli.dll

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM