我有一个php类/函数,允许我对数据库执行查询,然后返回结果的关联数组。mysqli_stmt :: get_result()不工作,PHP版本更新和mysqlnd启用
在我的本地开发环境(MAMP)上,一切正常。
一旦我感动主机我得到以下错误在GoDaddy的Linux共享网站:致命错误:在/home/username/public_html/dev.x-matcher调用未定义的方法mysqli_stmt :: get_result()
我按照以5.4原生5.4改变PHP版本,因此使mysqlnd自定义扩展下面的文章(https://ca.godaddy.com/help/enable-custom-php-modules-12036)上线的.com /管理/班/ c_RequeteSQL.php。
Godaddy CPANEL - Select PHP Version
一旦激活错误在前看不见但脚本仍然块在同一个地方,因此仍无法正常工作。
我也试图让PHP的5.4原生版本并上传中,我添加了以下行的自定义php.ini文件:延长= php_mysqli_mysqlnd.so,仍然没有工作...
我有阅读了很多像这样的线程(stackoverflow.com/questions/96/call-to-undefined-method-mysqli-stmtget-result),但无法找到解决我的问题的方法。
我明白,我可以用bind_param和取为了解决这个问题,但我不希望为My功能需要动态获取关联数组的结果,然后返回数组这样做。使用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(){
}
}
我在做什么错误的服务器上,以便php_mysqli_mysqlnd无法正常工作或者是否有支持此扩展的托管服务?
你的意思是“脚本仍然在同一个地方阻塞”。没有错误?怎么了? – simon
是的,这真的很奇怪。下面的错误“致命错误:调用未定义的方法mysqli_stmt :: get_result()在/home/username/public_html/dev.x-matcher.com/admin/classes/c_RequeteSQL.php在线146”只是消失,但没有改善它是在同一个地方停下来。 (*我很抱歉,英文不是我的第一语言) –
我已经使用bind_param进行了一次测试,并使用预先选择的请求进行了获取,并获得了正确的变量,对get_result使用了相同的请求并且没有任何结果。正如所解释的,虽然请求从不相同(通过另一个脚本动态发送),所以不适合我... –