【发布时间】:2013-12-24 20:51:27
【问题描述】:
我刚刚接手了一个旧项目,我需要做的第一件事就是从 mysql_* 扩展迁移到 mysqli_* 扩展。我以前很少使用 PHP……大部分新代码都可以工作,但在下面的示例中,我似乎把事情搞砸了……
旧功能:
function user_id_from_username($username) {
$username = sanitize($username);
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
}
新(无效)功能:
function user_id_from_username($username) {
$username = sanitize($username);
$id = mysqli_query(connect(),"SELECT `user_id` FROM `users` WHERE `username` = '$username'");
return $id;
}
另一个旧的:
function login($username, $password) {
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = md5($password);
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
}
还有新的:
function login($username, $password) {
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = md5($password);
$check = mysqli_query(connect(),"SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
return $check == $user_id ? TRUE : FALSE;
}
我的消毒功能:
function sanitize($data) {
return htmlentities(strip_tags(mysqli_real_escape_string(connect(), $data)));
}
【问题讨论】:
-
您收到了哪些错误消息?
-
mysql_result在mysqli、but you can write one 中没有等价物 -
@thatonefreeman 我没有得到任何...
-
@Wrikken 他没有在他的新代码中使用 mysql_result。还是我错过了你的意思?
-
@thatonefreeman:他不是,但在他的新代码中,他假设
mysqli_query()与之前的mysql_result(mysql_query())组合一样工作,因此我提到了它。 (即:当前代码将结果集资源与值进行比较,而不是获取的结果)。