ich eine PHP-Klasse/Funktion haben, die mir erlauben, eine Abfrage auf der DB durchzuführen und dann ein assoziatives Array des Ergebnisses zurück.mysqli_stmt :: get_result() nicht funktioniert, PHP-Version aktualisiert und mysqlnd aktiviert
Alles funktioniert perfekt auf meiner lokalen Entwicklungsumgebung (MAMP).
Nachdem ich die Seite auf einem GoDaddy Linux-Shared-Hosting bewegte ich die folgende Fehlermeldung erhalten: Fatal error: Call to undefined Methode mysqli_stmt :: get_result() in /home/username/public_html/dev.x-matcher .com/admin/classes/c_RequeteSQL.php on line
ich den folgenden Artikel (https://ca.godaddy.com/help/enable-custom-php-modules-12036), um befolgt habe die PHP-Version von 5.4 native 5.4 und damit die mysqlnd benutzerdefinierten Erweiterung ermöglichen zu ändern.
Godaddy CPANEL - Select PHP Version
Einmal aktiviert, um den Fehler disapears aber das Skript noch Blöcke an der gleichen Stelle, so immer noch nicht funktioniert.
Ich habe auch versucht, die 5.4 native Version von PHP zu halten und eine benutzerdefinierte Datei php.ini, in dem ich die folgende Zeile hinzugefügt hochladen: extension = php_mysqli_mysqlnd.so und arbeitet immer noch nicht ...
Ich habe lese viele Threads wie diese (stackoverflow.com/questions/96/call-to-undefined-method-mysqli-stmtget-result), aber ich konnte keine Lösung für mein Problem finden.
Ich verstehe, dass ich bind_param und holen verwenden könnte, das Problem zu begegnen, aber ich will nicht, um meine Funktion Notwendigkeit tun, um dynamisch die Ergebnisse in einem assoziativen Array zu holen und dann das Array zurück. Die Verwendung von bind_param zwingt meine, die Variablen einzugeben, und da die Anzahl der zurückgegebenen Variablen nie die gleiche ist, suche ich nach der Lösung.
Sie können meinen phpinfo sehen, wenn Sie diesem Link folgen: dev. x-matcher.com/phpinfo.php
Wie erklärt meine ganze Codierung 100% auf meinem lokalen Umfeld funktioniert, aber hier ist meine Klasse für alle Fälle:
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(){
}
}
Was bin ich auf dem Server falsch zu machen, so php_mysqli_mysqlnd funktioniert nicht ODER gibt es einen Hosting-Service, der diese Erweiterung unterstützt?
Was meinst du mit „das Skript noch Blöcke an derselben Stelle“. Keine Fehler? Was geschieht? – simon
Ja, es ist wirklich komisch. Der folgende Fehler "Fatal error: Call to undefined Methode mysqli_stmt :: get_result() in /home/username/public_html/dev.x-matcher.com/admin/classes/c_RequeteSQL.php on line 146" nur disapears aber keine Verbesserung, es ist hält am selben Ort an. (* Es tut mir leid Englisch ist nicht meine erste lenguage) –
Ich habe habe einen Test bind_param mit und hole mit einer vorgewählten Anfrage und bekam die richtigen Variablen verwendet, um die gleiche Anfrage mit get_result und bekam nichts. Wie erklärt, obwohl die Anfrage nie die gleiche ist (dynamisch über ein anderes Skript gesendet), so wird es nicht für mich arbeiten ... –