在php中检索最近更新的SQL记录

时间:2018-04-23 10:54:56

标签: php select insert

是否可以更新数据库,然后在输入所有新数据后立即获取新记录集?在执行包含所有新记录的新SELECT之前,是否需要某种闭包以确保插入sql已完成?

即简单地说,如果我总共有50 000个条目,其结构如下:

$sql = "INSERT INTO `acc_change`(`ID`, `type`, `name`, `amount`, `date`, `processed`) 

VALUES (NULL, 'auto', 'Lorem', '75.00', '2018-04-05 00:00:00', 'no'),
(NULL, 'auto', 'Ipsum', '12.00', '2018-04-25 00:00:00', 'no'),(NULL, 'auto', 'Dolor', '24.00', '2018-04-28 00:00:00', 'no')...

INSERT INTO `videos`(`ID`, `type`, `name`, `date`, `processed`) 

VALUES (NULL, 'auto', 'Lorem', '2018-04-05 00:00:00', 'no')...

然后我能做这样的事情:

$update_sql = "SELECT * FROM `acc_change` where `date` < '2018-04-23 12:32:00'"
$sqlMsg = enterSql($update_sql);

并获取所有最近添加的记录?

重要: 通常我会:

  1. 从数据库中提取旧数据并将其保存在数组/对象中

  2. 拉出新数据并保存在数组/对象中。

  3. 过滤掉我需要的东西并制作新的数组/对象。

  4. 创建新的插入SQL语句。

  5. 我完全清楚这是解决问题的方法,但这不是我要问的问题。我问你是否/如何插入/更新,然后立即访问这些新数据。

    我的数据库功能:

    function db($action){
        static $conn;
        $servername = "localhost";
        $dbuser = "root";
        $dbpass = "";
        $dbname = "life2020";
        if ($action == "use"){
            if ($conn === null){ 
                $conn = mysqli_connect($servername, $dbuser, $dbpass, $dbname);
                if (!$conn) {
                    die("Connection failed: " . mysqli_connect_error());
                }
            }
            return $conn;
        } else {
            mysqli_close($conn);
        }
    }
    
    function get_db_rows($sql){
        $rows = array();
        $conn = db("use");
        $result = mysqli_query($conn, $sql) or die("Erro!: " . mysqli_error($conn));
        if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
                $rows[] = $row;
            }
        }
        mysqli_free_result($result);
        return $rows;
    }
    
    function enterSql($sql){
        $sqlMsg = "";
        $conn = db("use");
        if (mysqli_multi_query($conn, $sql)) {
            $sqlMsg = "Entered data";
        } else {
            $sqlMsg = "Error updating record: " . mysqli_error($conn);
        }
        mysqli_close($conn);
        return $sqlMsg;
    }
    

1 个答案:

答案 0 :(得分:-1)

SELECT * FROM table_name ORDER BY id DESC,LIMIT 2.