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

Posted

技术标签:

【中文标题】从 MySQL 数据库获取数据后,从第 n 行获取列数据并分配给变量【英文标题】:After fetching data from MySQL database fetching column data from nth row and assigning to variable 【发布时间】:2019-04-29 10:22:19 【问题描述】:

所以我从 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

有人可以帮忙吗?

【问题讨论】:

你的代码有什么问题? @PaulSpiegel 请查看我更新的问题,如果您需要更多信息,请告诉我。 那么从结果中的三行你想得到第一个和最后一个?并扔掉中间(第二个)? 不一定要舍弃中间...例如我只想将第一行的值分配给$variable1,将最后一行的值分配给$variable2。因此,当我调用 $variable1 时,它会回显数据库中的特定值以及 $variable2 的不同值。 【参考方案1】:

使用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

【讨论】:

好的,我知道我必须通过$final_result = $variable1['login_attempt_time'];获取指定的数据,非常感谢!【参考方案2】:

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

【讨论】:

以上是关于从 MySQL 数据库获取数据后,从第 n 行获取列数据并分配给变量的主要内容,如果未能解决你的问题,请参考以下文章

POST完成后如何从MySQL获取数据

用limit关键字查询从第3条记录开始的3条记录,如何表示

MySQL获取分组后的TOP 1和TOP N记录

从sql数据库第2行第4列获取数据

MySQL根据列中的最大值获取行[重复]

熊猫每 n 行