我有一個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使用了相同的請求並且沒有任何結果。正如所解釋的,雖然請求從不相同(通過另一個腳本動態發送),所以不適合我... –