2016-04-15 10 views
-1

Ich übersetze gerade meine Website von MySQL zu MySQLi und ich bin auf ein Problem gestoßen. Ich habe stundenlang gesucht, aber keines der Ergebnisse, die ich gefunden habe, konnte mir helfen. In meiner connect.php Datei habe ich den folgenden Code:Aufruf zu undefinierter Methode mysqli :: data_seek()

<?php 

connect_db(); 

function connect_db() { 
    $connect_error = 'Sorry, we are experiencing connection issues.'; 
    $mysqli = mysqli_connect('localhost', 'root', '', 'db') or die($connect_error); 

} 

function mysqli_result($res, $row, $field=0) { 
    $res->data_seek($row); 
    $datarow = $res->fetch_array(); 
    return $datarow[$field]; 
} 

?> 

MySQLi_Result() in login.php und register.php aufgerufen wird.

Jedes Mal, wenn ich versuche, um dich einzuloggen oder zu registrieren, bekomme ich folgende Fehlermeldung:

Fatal error: Call to undefined method mysqli::data_seek() in C:\xampp\htdocs\core\database\connect.php on line 10

Linie 10 enthält $ res-> data_seek ($ row);

Hier sind die Erweiterungen in meinem php.ini Datei:

extension=php_bz2.dll 
extension=php_curl.dll 
extension=php_fileinfo.dll 
extension=php_gd2.dll 
extension=php_gettext.dll 
;extension=php_gmp.dll 
;extension=php_intl.dll 
;extension=php_imap.dll 
;extension=php_interbase.dll 
;extension=php_ldap.dll 
extension=php_mbstring.dll 
extension=php_exif.dll 
extension=php_mysql.dll 
extension=php_mysqli.dll 
;extension=php_oci8_12c.dll 
;extension=php_openssl.dll 
;extension=php_pdo_firebird.dll 
extension=php_pdo_mysql.dll 
;extension=php_pdo_oci.dll 
;extension=php_pdo_odbc.dll 
;extension=php_pdo_pgsql.dll 
extension=php_pdo_sqlite.dll 
;extension=php_pgsql.dll 
;extension=php_shmop.dll 

EDIT:

Hier MySQLi_Result verwendet wird:

function user_count() { 
    $mysqli = connect_db(); 
    $query = mysqli_query($mysqli, "SELECT COUNT(`user_id`) FROM `users` WHERE `active` = 1"); 
    return mysqli_result($mysqli, $query, 0); 
} 
+0

Haben Sie überprüft, ob '$ res' ein gültiges Mysqli-Ergebnisobjekt ist? Wie und wo rufst du deine mysqli_result() an? – Vincent

+1

Was ist '$ res' Ich denke, es ist kein MYSQLI_Statement-Objekt oder ein MYSQLI_Result-Objekt Zeigen Sie uns, wie Sie' $ res' erstellen – RiggsFolly

+0

@Vincent Sorry, ich sollte wahrscheinlich daran erinnert werden. Ich werde die Frage bearbeiten und unten hinzufügen. –

Antwort

0

Eigentlich ist diese Frage könnte mit der Tatsache zusammenhängen, dass Sie keinen Wert vonzurückgeben

Ohne die $mysqli Variable zurückzugeben, ist Ihr Verbindungsobjekt für den Rest Ihres Skripts völlig unsichtbar! In der Tat wird es nicht einmal existieren, sobald diese Funktion

ändern sie beendet So zu diesem

function connect_db() { 
    $connect_error = 'Sorry, we are experiencing connection issues.'; 
    $mysqli = mysqli_connect('localhost', 'root', '', 'db') or die($connect_error); 
    return $mysqli; 
} 

Es gibt einen viel einfacheren Weg, dies zu tun:

function user_count() { 
    $mysqli = connect_db(); 
    $query = mysqli_query($mysqli, "SELECT COUNT(`user_id`) FROM `users` WHERE `active` = 1"); 
    return mysqli_result($mysqli, $query, 0); 
} 

Wie diese durch Hinzufügen eines Alias, dh ein verwendbarer Name für die Ergebnisspalte

function user_count() { 
    $mysqli = connect_db(); // ?? 
    $query = mysqli_query($mysqli, "SELECT COUNT(`user_id`) as num 
            FROM `users` WHERE `active` = 1"); 
    $row = mysqli_fetch_array($query, MYSQLI_ASSOC); 
    return row['num']; 
} 

Es ist auch eine viel bessere Idee zu verbinden Die Datenbank ONCE pro Skript, nicht einmal für jeden Zugriff auf die Datenbank als Verbindung ist eine zeitraubende Operation!

Verwandte Themen