【问题标题】:retreiving recently updated SQL records in php在 php 中检索最近更新的 SQL 记录
【发布时间】:2018-10-03 09:33:51
【问题描述】:

是否可以更新数据库,然后立即获取一个新记录集,然后输入所有这些新数据?在执行包含所有新记录的新 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 语句。

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

我的数据库功能:

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;
}

【问题讨论】:

  • I am asking if/how you can insert/update and then access that new data right away. 好吧,insert_id 将返回 0The value of the AUTO_INCREMENT field that was updated by the previous query。但是,这仅适用于 INSERT 查询。如果您想运行数字检查(if(enterSql($sql) &gt; 0) )
  • 哦,好吧 - 所以我可以在循环中检查 insert_id ,如果还没有完成,然后 sleep() ?我喜欢它。
  • 你会如何处理更新?
  • 根本不需要sleep(),因为mysqli_query 将挂起,直到它执行完查询。要处理UPDATE,您可能应该传递您在查询中用作唯一标识符的ID
  • 是的,我喜欢 mysqli_query 的这一点——但我正在使用的 mysqli_multi_query 似乎没有做到这一点。

标签: php select insert


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    相关资源
    最近更新 更多