mysqli_result甚至没有功能?

时间:2013-12-05 06:44:22

标签: php mysqli

我有这个登录脚本:

if (isset($_POST['submit'])) {
    $_POST = db_escape($_POST);

    if (!empty($_POST['name']) && !empty($_POST['pass'])) {

        $sql = "SELECT id FROM users
        WHERE name='{$_POST['name']}'
        AND pass='{$_POST['pass']}'";

        $result = mysqli_query($conn, $sql);

        if (mysqli_num_rows($result) == 0) {
            header("Location: index.php?badlogin=");
            exit;
        }
        $_SESSION['sess_id'] = mysqli_result($result, 0, 'id');
        $_SESSION['sess_name'] = $_POST['name'];
        header("Location: com.php");
    } else {
        $status = "Fyll i alla fälten.";
    }
}

现在,当我尝试登录时,我得到了

  

致命错误:调用未定义的函数mysqli_result()   第20行的D:\ xampp \ htdocs \ fbook \ index.php

这是为什么?我正在将mysql_ *转换为mysqli_ *,所以我之前没有使用过mysqli,真的。 mysqli_result()不再是一个函数吗?如果是这样,我应该用{<1}}替换什么?

提前谢谢! / J

3 个答案:

答案 0 :(得分:1)

因为您使用的是mysqli_num_rows($result)num_rows不是函数。它可以像这样使用:

$num_rows = $mysqli_result->num_rows;

改为使用mysqli_fetch_assoc()

while($row = mysqli_fetch_assoc($result)) {
// your stuff
}

答案 1 :(得分:0)

试试这个。

if (isset($_POST['submit'])) {
     $_POST = db_escape($_POST);

     if (!empty($_POST['name']) && !empty($_POST['pass'])) {

         $sql = "SELECT id FROM users
         WHERE name='{$_POST['name']}'
         AND pass='{$_POST['pass']}'";

         $result = mysqli_query($conn, $sql);

         if ($result->num_rows == 0) {
             header("Location: index.php?badlogin=");
             exit;
         }
         else 
         {
         $fetch = $result->fetch_row();
         $_SESSION['sess_id'] = $fetch[0];
         $_SESSION['sess_name'] = $_POST['name'];
         header("Location: com.php");
         }
      } else {
            $status = "Fyll i alla fälten.";
      }
    }

我希望它不会给出任何错误。

由于

答案 2 :(得分:-3)

不要以这种方式重写旧代码。

要么学习如何正确使用mysqli,要么保留旧的基于mysql的代码。你现在在做什么并不值得麻烦。