2016-04-15 20 views
-1

現在、私のウェブサイトをMySQLからMySQLiに移行していますが、問題が発生しました。私は何時間も探していますが、私が見つけた結果はどれも私を助けてくれませんでした。がlogin.phpregister.phpに呼び出されます()未定義のメソッドを呼び出す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:私のconnect.phpファイルでは、私は次のコードを持っています。

私は、ログインまたは登録しようとするたびに、私は次のエラーを取得する:

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

ライン10は$ RES-> data_seek($行)含まれています。ここで

は私ののphp.iniファイルに拡張子です:

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:

これはmysqli_resultが使用されているところである。この問題は実際に

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

'$ res'が有効なMysqli結果オブジェクトであるかどうかチェックしましたか?どのようにmysqli_result()を呼び出していますか? – Vincent

+1

'$ res'とは何ですか?MYSQLI_StatementオブジェクトやMYSQLI_Resultオブジェクトではないと思います。$ res'を作成する方法を教えてください – RiggsFolly

+0

@Vincent残念ながら、私はおそらくそれを思い出すべきです。私は質問を編集し、下部に追加します。 –

答えて

0

から値を返さないという事実に関連する可能性があります

$mysqli変数を返さないと、接続オブジェクトはスクリプトの残りの部分に完全に見えなくなります。追加することにより、このよう

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); 
} 

:実際にはそれもこの機能が

を終了したら、だからこれを行うためのもっと簡単な方法があります。この

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

にそれを修正存在しませんエイリアス、つまり結果列の使用可能な名前

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']; 
} 

また、接続する方がはるかに良いアイデアスクリプトごとのデータベースONCEは、データベースへのアクセスごとに1回ではなく、接続が非常に時間のかかる操作です。

関連する問題