Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php获取一行中的所有数据?_Php_Mysqli - Fatal编程技术网

如何使用php获取一行中的所有数据?

如何使用php获取一行中的所有数据?,php,mysqli,Php,Mysqli,我学习了这个youtube视频教程。它教会了我如何获取用户名并将其发布到index.php页面。我想知道如何获取行中的所有数据,而不仅仅是用户名(注意:我使用电子邮件地址作为用户名)。该表有firstname、lastname、电子邮件地址、密码 if (count($errors) == 0) { $password = md5($password); $query = "SELECT * FROM user_info WHERE email_address='$username' AND p

我学习了这个youtube视频教程。它教会了我如何获取用户名并将其发布到
index.php
页面。我想知道如何获取行中的所有数据,而不仅仅是
用户名
(注意:我使用
电子邮件地址
作为用户名)。该表有
firstname、lastname、电子邮件地址、密码

if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM user_info WHERE email_address='$username' AND password='$password'";
    $result = mysqli_query($db, $query);
    if (mysqli_num_rows($result) == 1) {
        $_SESSION['email_address'] = $username;
        $_SESSION['success'] = "You are now logged in";
        header('location: dashboard.php');
    } else {
        array_push($errors, "Wrong username/password");
    }
}

实际上你不是从你的查询中得到用户名,而是从你的帖子中得到的。将查询结果存储到
$result
变量中,然后可以使用它访问行

if (count($errors) == 0) {
    $password = md5($password);
    $query = "SELECT * FROM user_info WHERE email_address='$username' AND password='$password'";

    $result = mysqli_query($db, $query);

    while ($row = $result->fetch_assoc()) {
        $_SESSION['email_address'] = $row['username'];

        //here goes other rows from your DB
        //$row['email'];
        //$row['other_rows'];

        $_SESSION['success'] = "You are now logged in";
        header('location: dashboard.php');
    } else {
        array_push($errors, "Wrong username/password");
    }
}

这应该可以做到。您已经从数据库中选择了所有列,因此只需使用它即可

LIMIT 1
确保您只返回一行,并且无论如何都不应返回多行

if (count($errors) == 0) {

     $password = md5($password);
     $query = "SELECT * FROM user_info WHERE email_address='$username' AND password='$password' LIMIT 1";

     $result = mysqli_query($db, $query);

     if(mysqli_num_rows($result) == 1) {
         $_SESSION['email_address'] = $result['username'];
         $_SESSION['firstname'] = $result['firstname'];
         $_SESSION['lastname'] = $result['lastname'];        
         $_SESSION['success'] = "You are now logged in";
        header('location: dashboard.php');
     } else {
        array_push($errors, "Wrong username/password");
     }
}

从php.net关于
mysqli\u查询

失败时返回FALSE。为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_结果对象。对于其他成功的查询,mysqli_query()将返回TRUE

您仍然需要将结果提取为关联数组来使用它(例如使用
mysqli\u fetch\u assoc
)。数组将列名作为键,列值作为值

if (count($errors) == 0) {
    $password = md5($password);
    $query = "SELECT * FROM user_info WHERE email_address='$username' AND password='$password'";
    $sqlQuery = mysqli_query($db, $query);
    // fetch the result as an associative array here
    $result = mysqli_fetch_assoc($sqlQuery);
    if (mysqli_num_rows($sqlQuery) == 1) {
       // if you are using the email_address as username
       $_SESSION['email_address'] = $result['email_address'];
       $_SESSION['first_name'] = $result['firstname'];
       $_SESSION['last_name'] = $result['lastname'];

       $_SESSION['success'] = "You are now logged in";
       header('location: dashboard.php');
    } else {
        array_push($errors, "Wrong username/password");
    }
}

您想从一行中获取所有信息吗?@suvojit_007 yesb通过使用
*
,您可以从一行中选择所有信息row@suvojit_007是的,但是如果我使用
$result['username']
$result['email\u address',我不知道如何调用它们中的每一个
它将显示致命错误:无法使用C:\xampp\htdocs\revaworks\server.php第26ah行中的mysqli\u result类型的对象作为数组,很抱歉访问您需要使用的对象
->
,而不是
[]
。所以
$result->username
再次抱歉,请参见编辑。您需要获取结果的行。然后,你可以访问你救我的专栏。谢谢你,我很乐意。很高兴我能帮忙:)