mysqli_stmt::get_result()不工作,PHP版本已更新且启用了mysqlnd

mysqli_stmt::get_result()不工作,PHP版本已更新且启用了mysqlnd,php,mysqli,Php,Mysqli,我有一个php类/函数,允许我对数据库执行查询,然后返回结果的关联数组 在我的本地开发环境(MAMP)中,一切都非常好 一旦我在godaddy Linux共享主机上移动了该站点,我就会收到以下错误:致命错误:在/home/username/public\u html/dev.x-matcher.com/admin/classes/c_RequeteSQL.php的第146行调用未定义的方法mysqli_stmt::get_result() 为了将PHP版本从5.4本机更改为5.4,从而启用mys

我有一个php类/函数,允许我对数据库执行查询,然后返回结果的关联数组

在我的本地开发环境(MAMP)中,一切都非常好

一旦我在godaddy Linux共享主机上移动了该站点,我就会收到以下错误:致命错误:在/home/username/public\u html/dev.x-matcher.com/admin/classes/c_RequeteSQL.php的第146行调用未定义的方法mysqli_stmt::get_result()

为了将PHP版本从5.4本机更改为5.4,从而启用mysqlnd自定义扩展,我遵循了以下文章()

一旦激活,错误将消失,但脚本仍在同一位置阻塞,因此仍然无法工作

我还尝试保留PHP的5.4本机版本,并上传一个定制的PHP.ini文件,其中添加了以下行:extension=PHP\u mysqli\u mysqlnd.so,但仍然无法工作

我读过很多类似这样的线程(stackoverflow.com/questions/8321096/call to undefined method mysqli stmtget result),但找不到任何解决问题的方法

我知道我可以使用bind_paramfetch来解决这个问题,但我不想这样做,因为我的函数需要在关联数组中动态获取结果,然后返回数组。使用bind_param会强制我输入变量,由于返回变量的数量因请求而异,因此它不是我要寻找的解决方案

如果遵循以下链接,您可以看到我的phpinfo:dev.x-matcher.com/phpinfo.php

如前所述,我的整个编码在本地环境中100%有效,但以下是我的课程,以防万一:

class RequeteSQL {
    private $dbhost = 'localhost';
    private $dbuser = 'user';
    private $dbpass = 'pass';


    function retourArray($requete,$lettres,$parametres){

        global $dbhost;
        global $dbuser;
        global $dbpass;
        $basededon = "db";

        $connection = new mysqli($dbhost,$dbuser,$dbpass,$basededon);
        $statement = $connection->prepare($requete);
        if ($statement === false) {
            trigger_error('Probleme avec la requete SQL :' . $requete . ' Erreur code : ' . $connection->error, E_USER_ERROR);
        } else {
            if ($parametres!=NULL) {
                if (is_array($parametres)) {

                    $a_params = array();
                    $param_type = '';
                    $n = count($lettres);
                    for ($i = 0; $i < $n; $i++) {
                        $param_type .= $lettres[$i];
                    }

                    $a_params[] = & $param_type;

                    for ($i = 0; $i < $n; $i++) {
                        $a_params[] = & $parametres[$i];
                    }

                    call_user_func_array(array($statement, 'bind_param'), $a_params);
                } else {
                    $statement->bind_param($lettres,$parametres);
                }

            }

            $statement->execute();
            $resultat = $statement->get_result();
            $resultarray = $resultat->fetch_all(MYSQLI_ASSOC);
            $statement->close();
            $connection->close();

            return $resultarray;
        }
    }

    function __destruct(){

    }
}
class-RequeteSQL{
private$dbhost='localhost';
private$dbuser='user';
私有$dbpass='pass';
函数retourArray($requete、$lettres、$Parameters){
全球$dbhost;
全球$dbuser;
全球$dbpass;
$basededon=“db”;
$connection=newmysqli($dbhost、$dbuser、$dbpass、$basededon);
$statement=$connection->prepare($requete);
如果($statement==false){
触发错误('Probleme avec la requete SQL:'.$requete.'Erreur code:'.$connection->error,E_USER_error);
}否则{
如果($Parameters!=NULL){
if(is_数组($parameters)){
$a_params=array();
$param_type='';
$n=计数($lettres);
对于($i=0;$i<$n;$i++){
$param_type.=$lettres[$i];
}
$a_params[]=&$param_type;
对于($i=0;$i<$n;$i++){
$a_params[]=&$parametres[$i];
}
调用_user_func_数组(数组($statement,'bind_param'),$a_params);
}否则{
$statement->bind_param($lettres,$parameters);
}
}
$statement->execute();
$resultat=$statement->get_result();
$resultarray=$resultat->fetch_all(MYSQLI_ASSOC);
$statement->close();
$connection->close();
返回$resultarray;
}
}
函数_udestruct(){
}
}

我在服务器上做错了什么,所以php_mysqli_mysqlnd不工作,或者有支持此扩展的托管服务吗?

由于找不到答案,我决定将代码改为使用PDO而不是mysqli。它工作得很好。我不能送你去一个合适的教程,因为我说法语,读法语我的。但是有很多资源可以使用PDO。这很容易。希望这能有所帮助。

你说的“脚本仍然在同一个地方阻塞”是什么意思。没有错误?发生了什么?是的,真的很奇怪。下面的错误“致命错误:在第146行/home/username/public\u html/dev.x-matcher.com/admin/classes/c_RequeteSQL.php中调用未定义的方法mysqli_stmt::get_result()”只会消失,但没有改进,它会停在同一位置。(*很抱歉英语不是我的第一种语言)我使用bind_param和fetch对预先选择的请求进行了测试,得到了正确的变量,使用了相同的请求和get_result,但没有得到任何结果。如前所述,虽然请求从来都不是相同的(通过另一个脚本动态发送),因此对我来说不起作用…调用
phpinfo()
时是否会显示
mysqlnd
?另外,请确保启用了错误报告,并将其设置为
E_ALL
mysqlnd显示为enabled,我刚刚将php.ini更新为E_ALL&E_通知。仍然没有错误消息,但可能必须刷新,这是您的一个好主意。在本教程中,我写了一篇很好的文章,因此您可以推荐这篇:)