私はDB上でクエリを実行し、結果の連想配列を返すPHPクラス/関数を持っています。mysqli_stmt :: get_result()が動作しません。PHPバージョンが更新され、mysqlndが有効になりました。
私のローカル開発環境(MAMP)ではすべてが正常に動作します。
私は、私は次のエラーを取得するホスティングGoDaddyはLinuxの共有にサイトを移動したら:致命的なエラー:未定義のメソッドmysqli_stmtに呼び出し:: get_result()/home/username/public_html/dev.x-matcherでライン上.COM /管理/クラス/ c_RequeteSQL.php
私は5.4にネイティブ5.4からPHPのバージョンを変更して、mysqlndのカスタム拡張を有効にするために、次の記事(https://ca.godaddy.com/help/enable-custom-php-modules-12036)を続いています。
Godaddy CPANEL - Select PHP Version
は一度そう、まだ機能していない、同じ場所でdisapearsが、スクリプトまだブロックをエラーを活性化しました。 ...私が持っている
を延長= php_mysqli_mysqlnd.so、まだ動作していない:
は、私はまた、PHP 5.4のネイティブバージョンを保持し、私は次の行を追加したカスタムのphp.iniファイルをアップロードしようとしていますこの1つのようなスレッドをたくさん読んでください(stackoverflow.com/questions/96/call-to-undefined-method-mysqli-stmtget-result)しかし、私の問題の解決策を見つけることができませんでした。私はbind_paramと問題に対処するためにをフェッチが、私は私の機能を動的連想配列で結果をフェッチして、配列を返す必要があるとして、そうしたくないを使用することができることを理解しています。 bind_paramを使用すると、変数を入力するよう強制されます。返される変数の数は、要求に応じて決して同じではないため、私が探している解決法では決してありません。
このリンクをたどると私のphpinfoが見えます。 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が動作していないか、DOがこの拡張機能をサポートしているホスティングサービスがありますか?
「スクリプトは同じ場所にブロックされています」とはどういう意味ですか?エラーはありませんか?何が起こるのですか? – simon
はい、本当に変です。次のエラー "致命的なエラー:146行目の/home/username/public_html/dev.x-matcher.com/admin/classes/c_RequeteSQL.phpの未定義メソッドmysqli_stmt :: get_result()の呼び出しは、単に消滅しますが、改善はありません同じ場所で止まる。 (*ごめんなさい、英語は私の最初の時間軸ではない) –
私はbind_paramを使ってテストを行い、あらかじめ選択されたリクエストを取得して正しい変数を取得し、get_resultで同じリクエストを使用して何も得られませんでした。説明したように、要求は決して同じではありません(動的に別のスクリプトを介して送信される)ので、私にとってはうまくいかないでしょう... –