从MySQL数据库获取数据后,从第n行获取列数据并分配给变量

时间:2019-04-29 10:22:19

标签: php mysql

因此,我已从MySQL数据库中获取数据,并希望将其分配给基于第n行的变量。仅对底部的三行进行过滤,我想将冷杉和最后一行的值分配给两个变量。

$sql3 = "SELECT * FROM login_attempts WHERE login_attempt_user_id=? AND login_attempt_result=? ORDER BY login_attempt_id DESC LIMIT 3;";
$stmt3 = mysqli_stmt_init($conn);

if (!mysqli_stmt_prepare($stmt3, $sql3)) {
    echo 6;
    exit();

} else {

    mysqli_stmt_bind_param($stmt3, "ss", $login_attempt_user_id, $login_attempt_success);
    mysqli_stmt_execute($stmt3);
    $result2 = mysqli_stmt_get_result($stmt3);

    if (mysqli_num_rows($result2) > 0) {

        while ($row2 = mysqli_fetch_assoc($result2)) {

            $test1 = $row2['login_attempt_time'][0];

            $test2 = $row2['login_attempt_time'][2];

            echo $test1.$test2;
            exit();
        }
    } else {
        //echo 4;
        exit();
    }
}

这段代码在while循环中,我意识到我要尝试的是数组。我想做一些类似的事情来实现自己的目标。

我的代码未将数据库条目分配给变量:$test = $row2['login_attempt_time']分配了所获取行的最后一个值,但是$test = $row2['login_attempt_time'][0]仅返回了值1

请问有人可以帮助您吗?

2 个答案:

答案 0 :(得分:0)

请记住,此mysqli_fetch_assoc($result2))将从数据库中获取一行。因此,第一次,$row2将是第一行的内容,第二次$row2是第二行,等等。也许在循环中添加一个计数器,以知道何时填充$ test1和$ test2,与if条件一样。

答案 1 :(得分:0)

使用mysqli::fetch_all()将所有(三)行提取到二维数组中。然后使用reset()end()获取第一个和最后一个元素(行)。

更改

    while ($row2 = mysqli_fetch_assoc($result2)) {

        $test1 = $row2['login_attempt_time'][0];

        $test2 = $row2['login_attempt_time'][2];

        echo $test1.$test2;
        exit();
    }

    $data = $result2->fetch_all(MYSQLI_ASSOC);
    $variable1 = reset($data); // first row
    $variable2 = end($data);   // last row