【问题标题】:Need help to convert code from mysql to mysqli需要帮助将代码从 mysql 转换为 mysqli
【发布时间】:2015-12-17 14:58:01
【问题描述】:

我对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。计算输入的用户名对应的表(users)中是否有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。该功能似乎无法正常工作,因为我收到的一些奇怪结果与我从原始编码中收到的结果不同。任何想法如何更正转换后的代码?!!。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

我遇到问题的另一个代码如下, 原代码:

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

有什么想法吗?!!!

【问题讨论】:

    标签: php mysql database mysqli


    【解决方案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

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

    【讨论】:

    • 感谢您的评论和帮助。你能帮我处理第二个代码以及如何将 mysql_result 语句转换为 mysqli
    • 这是同一个问题,$con 是在该函数范围之外定义的。试试我在这里做了什么;如果您有问题帖子。如果它解决了您的问题,请记住接受此答案。 meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 2015-09-25
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多