我目前正在将我的网站从MySQL转换为MySQLi,我遇到了一个问题。我一直在寻找几个小时,但我找到的结果都没能帮到我。在我的connect.php文件中,我有以下代码:
<?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];
}
?>
在 login.php 和 register.php 中调用mysqli_result()。
每当我尝试登录或注册时,都会收到以下错误:
致命错误:在第10行的C:\ xampp \ htdocs \ core \ database \ connect.php中调用未定义的方法mysqli :: data_seek()
第10行包含 $ res-&gt; data_seek($ row);
以下是 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
编辑:
这是使用 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 :(得分:0)
实际上这个问题可能与您没有从connect_db()
如果不返回$mysqli
变量,您的连接对象将对您脚本的其余部分完全不可见!事实上,一旦这个功能完成,它就不会存在
所以将其修改为
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`) FROM `users` WHERE `active` = 1");
return mysqli_result($mysqli, $query, 0);
}
像这样,通过向结果列添加别名,即可用名称
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也是一个更好的主意,而不是每次访问数据库都是一次,因为连接是非常耗时的操作!