需要帮助将代码从mysql转换为mysqli

时间:2015-12-17 14:58:01

标签: php mysql database mysqli

我是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];
}

任何想法?!!!

1 个答案:

答案 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

另请注意,您需要==进行比较,=设置值。