我是php语言的新手,仅在一周内开始。
我在php中编写了一个用于登录/注销/用户注册/重置密码演示的代码。我使用mysql编写了一些代码,我现在需要将其转换为mysqli。请帮忙?!!
原始代码:
function user_exists($username) {
$query= mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'")
return (mysql_result($query, 0) == 1) ? true : false;
}
这是一个函数,应该查看输入的用户名($ username)是否已存在于数据库(lr)中,如果已存在则返回true。如果表中的任何user_id(用户)对应于输入的用户名,则计数;如果值为1,则该函数应返回true(表示用户名已存在),否则该函数应返回false。
我遇到将其转换为mysqli的问题。这是我到目前为止所做的: 转换代码:
$con=mysqli_connect('localhost','root','root','lr');
function user_exists($username) {
$row = mysqli_fetch_array(mysqli_query($con, "SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'"));
return ($row[0] = 1) ? true : false;
}
我尝试做同样的事情,但由于我不知道如何将mysql_result转换为mysqli编码,我试图创建一个名为" row"的变量(数组)。并将计数的user_id数插入其中。然后,我尝试将$ row [0]中存储的值与1进行比较。如果存储的值为1,则表示用户存在且函数应返回true,否则为false。该函数似乎无法正常工作,因为我收到的一些奇怪的结果与我从原始编码中得到的结果不同。任何想法如何纠正转换的代码?!!。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
我遇到的另一个问题是如下, 原始代码:
function user_id_from_username($username){
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username`='$username'"), 0, 'user_id');
}
此函数应返回与输入的$ username对应的user_id。我尝试将其转换为如下所示,但仍面临一些错误。
转换代码:
function user_id_from_username ($username) {
$row = mysqli_fetch_array(mysqli_query($con, "SELECT `user_id` FROM `users` WHERE `username`='$username'"));
return $row[0];
}
任何想法?!!!
答案 0 :(得分:1)
您在函数外定义连接,因此函数中未定义$con
。你可以做到
function user_exists($username) {
$con=mysqli_connect('localhost','root','root','lr');
$row = mysqli_fetch_array(mysqli_query($con, "SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'"));
return ($row[0] == 1) ? true : false;
}
或
$con=mysqli_connect('localhost','root','root','lr');
function user_exists($username) {
global $con;
$row = mysqli_fetch_array(mysqli_query($con, "SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username'"));
return ($row[0] == 1) ? true : false;
}
或调用函数时传递连接并更新函数参数。
user_exists($username, $con);
...
function user_exists($username, $con) {
您还应该研究使用预备语句; http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
有关变量范围的更多信息,请参阅http://php.net/manual/en/language.variables.scope.php。
另请注意,您需要==
进行比较,=
设置值。