【发布时间】:2015-06-14 06:02:47
【问题描述】:
我正在学习 OOP,所以我可能做了一些愚蠢的事情。我有使用 mysql 的代码,但读到 mysqli 更好,特别是因为我想从数据库中获取对象数组。我已经更新了我的代码,现在尝试使用 mysqli,并解决了一些问题,但现在我被卡住了。
来自我的数据库类文件:
class Database {
function __construct() {
$connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE) or die(mysqli_error($db));
?><pre><?
var_dump($connection);
?></pre><?
}
}
转储包含一些我不会在这里粘贴的变量,但前几行:
object(mysqli)#3 (19) {
["affected_rows"]=>
int(0)
["client_info"]=>
string(6) "5.5.40"
["client_version"]=>
int(50540)
["connect_errno"]=>
int(0)
["connect_error"]=>
NULL
我相信这意味着我已成功连接到数据库。
所以这是我的成员类文件:
<?php
include_once (inc('_class.db'));
class Member {
//Database connect
public function __construct() {
$db = new Database();
}
/*snip a registration function */
// Login process
public function check_login($emailusername, $password) {
$db = new Database(); # added for troubleshooting, seems to do nothing...
var_dump($db);
$password = md5($password);
$result = mysqli_query($db,"SELECT * from members WHERE email = '$emailusername' or username='$emailusername' and password = '$password'") or die(mysqli_error($db));
$user_data = mysqli_fetch_array($result,MYSQLI_ASSOC);
$no_rows = mysqli_num_rows($result);
/* snip code that runs after that */
}
?>
var_dump 产生以下内容:
object(Database)#2 (0) { }
同样,当我使用 mysql 语句时,这段代码都可以正常工作,但是转换为 mysqli 让我很头疼。
我已经阅读了几个 Stack Overflow 答案是这个错误 - “给定对象” - 还有几十个是其他不适用的“给定字符串”。我不知道我做错了什么。
据我所知,这不是一个重复的问题,尽管这样的问题经常被问到。
【问题讨论】:
-
只是一个警告:不要再使用 MD5。这是一个非常古老的算法并且不安全:en.wikipedia.org/wiki/MD5
-
显然整个教程有点过时了。呵呵。感谢您的提醒。 :)