PHP mysqli问题与重复记录

时间:2014-08-12 16:42:41

标签: php mysqli

我在尝试将数据从MySQL数据库下载到我的PHP代码时遇到了一些问题。即我试图将多行数据插入一个数组。 (这不应该是一项艰巨的任务)

我已经达到了从数据库中获取所有行的程度但并非我的所有行都以递增方式显示其ID号(例如,我有ID 1和ID 5,因为我&#39已经删除了一些ID,并且计数继续增加,无论如何

我想知道如何删除1到5之间的重复行; (以便第2,3和4段)和5之后的所有行,直到我的下一行有唯一数据。

这是我到目前为止所得到的:

获取SQL数据

public function do_retrieve_stored_message_data()
{
    $con=mysqli_connect("localhost","root","","coursework_db");

    for ($i = 1; $i <= 999; $i = $i + 1)
    {
        $m_id_checker = $i;

        $SQL="SELECT message_id, message_date, message_time, message_last_value FROM cw_messages WHERE message_id = '" . 
        mysqli_real_escape_string($con, $m_id_checker) . "'";

        $resulting = mysqli_query($con, $SQL);

        while($db_field = mysqli_fetch_assoc($resulting))
        {
            $m_message_id = $db_field['message_id'];
            $m_message_date = $db_field['message_date'];
            $m_message_time = $db_field['message_time'];
            $m_message_last_value = $db_field['message_last_value'];
        }

        $m_arr_sql_query_parameters_1 = array($m_message_date, $m_message_time, $m_message_last_value);
        $m_arr_sql_query_parameters_2 = array_merge($m_arr_sql_query_parameters_1);
        $m_arr_sql_query_parameters = array_unique($m_arr_sql_query_parameters_2);

        foreach($m_arr_sql_query_parameters as $m_data)
        {
            echo "$m_data";
        }
    }

    $this->c_arr_stored_message_data['message-name'] = $m_message_id;
    $this->c_arr_stored_message_data['message-retrieved-data'] = $m_arr_sql_query_parameters;

示例输入

  

1.2014-08-02.11:43:33.11345446(句号表示数据库中的不同列,但在实际示例中不是这样)

     

5.2014-08-05.11:48:33.11342249

预期输出

foreach($m_arr_sql_query_parameters as $m_data)
{
  echo "$m_data";
}

Output: 2014-08-02.11:43:33.11345446.2014-08-05.11:48:33.11342249 

(同样,完整停靠点仅用作标记,并且在真实代码中不会出现)

Post-Script:数据在&#34; $ m_data&#34;中回显重复999次,正如你在for循环中所期望的那样,所以我知道它会获取ID;但是在for循环之外,它只会获取我数据库中的最后一个数据条目而不是其他任何数据条目。

1 个答案:

答案 0 :(得分:1)

即使在你的评论之后,我也不清楚预期的目标。

但是,我会留下这个片段来获取您的所有数据并将其保存到数组中 - 这可能对您有所帮助。

<?php
    $con=mysqli_connect("localhost","root","","coursework_db");

    $sql = "SELECT message_id, message_date, message_time, message_last_value FROM cw_message WHERE message_id = '" . mysqli_real_escape_string($con, $m_id_checker) . "'";
    $query = mysqli_query($con, $sql);

    // Actual Snippet begins here
    $rows = array();
    while (($data = mysqli_fetch_assoc($query)))
    {
        $rows[] = array(
            "id" => $data["message_id"],
            "date" => $data["message_date"],
            "time" => $data["message_time"],
            "last_value" => $data["message_last_value"],
        );
    }
    // Snippet to get all data into an array ends here

    // Printing the returned data
    print_r($rows);
?>