RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1052569
Accepted
fermeg
fermeg
Asked:2020-11-30 19:01:16 +0000 UTC2020-11-30 19:01:16 +0000 UTC 2020-11-30 19:01:16 +0000 UTC

跟踪 SQL 表中的数据更改

  • 772

数据库中的表:

|id |имя пользователя   |дата       |значения   |
|1  |иван               |30-11-2019 |значение1  |
|2  |николай            |           |значение2  |

填表数据:

id, имя пользователя, дата, значение

数据是通过命令输入到表中的UPDATE,因为我需要将名称更改为另一个名称。

第二张表,我把第一张表的改动固定进去,我通过 往表中添加数据INSERT,请问,如何让旧名称写入第二张表?

|id |старое имя | новое имя |дата изменения |значения   |
|1  |иван       | сергей    |дата изменения |значения   |
|2  |николай    | александр |дата изменения |значения   |
php
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Bloom
    2020-11-30T22:59:10Z2020-11-30T22:59:10Z

    首先,创建一个表 tabl2,您将在其中保存日志

    $conn = new mysqli('1', 'r', 'p', 't');
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    
     mysqli_set_charset($conn,"utf8");  //обязательный параметр
    
    $sql = "CREATE TABLE tabl2 (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    oldname* VARCHAR(60) NOT NULL,
    newname* VARCHAR(60) NOT NULL,
    reg_date TIMESTAMP,
    znachenie* VARCHAR(60) NOT NULL,
    )";
    

    然后更新一个页面

    <?php
    
    echo '<form action= "post.php" method= "POST">'; 
    
    echo '<p>Новое Имя: </p><p> <input type= "text" name= "name"> </p>'; 
    
    echo'<p>Старое Имя: </p><p> <input type= "text" name= "oldname"></p>'; 
    
    echo '<input type= "submit" value= "Отправить">';
    
    
    if(isset($_POST['oldname'])){
      $name=$_POST['name'];
      $oldname=$_POST['oldname'];
    
    $conn1 = new mysqli("localhost", "my_user", "my_password", "world");
    
    /* проверка соединения */
    if ($mysqli->connect_errno) {
        printf("Не удалось подключиться: %s\n", $conn1->connect_error);
        exit();
    }
    
    $query = "select * from tabl1 where name='".$oldname."'";
    $result = $conn1->query($query);
    while($row2 = mysqli_fetch_assoc($result))
    {
    $arr2[]=$row2;
    }
    
    $znach=$arr2[0]['znachenie'];
    
    $sql = "UPDATE tabl1 SET name='".$name."' WHERE name='".$oldname."'";
    
    if ($conn1->query($sql) === TRUE) {
        echo "Record updated successfully";
    } else {
        echo "Error updating record: " . $conn1->error;
    }
    
    $query1 = "INSERT INTO tabl2 (oldname, newname, znachenie) VALUES ( '". $oldname."','".$name."','".$znach."')";
    
    if (mysqli_query($conn1, $query1)) {
    
    echo "<br>"."Dobavleno";
      }else{
        echo "Oshibka".mysqli_error($conn1);
      }
    
    
    }
    ?>
    
    • 1
  2. Best Answer
    fermeg
    2020-12-01T14:42:51Z2020-12-01T14:42:51Z

    使用触发器的决定:

    DELIMITER |
    CREATE TRIGGER `название триггера` `trigger_time` с trigger_event ON `название таблицы`
    FOR EACH ROW BEGIN
       INSERT INTO 'название таблицы 2' Set trigger_stmt  ;
    END;
    

    trigger_time- 触发时间。BEFORE- 活动前。AFTER- 在事件发生后。

    trigger_event- 事件: insert- 事件由插入、数据加载、替换语句引发

    update- 事件由更新操作员引发

    delete- 事件由删除、替换运算符引发。DROP TABLE 和 TRUNCATE 语句不激活触发器执行

    trigger_stmt- 触发器激活时执行的表达式

    我的请求看起来像这样

    DELIMITER |
    CREATE TRIGGER 'update_user' BEFORE UPDATE ON 'table1'
    FOR EACH ROW BEGIN
       INSERT INTO 'table02 Set' 'старое имя' = old.имя пользователя, 'новое имя' = new.имя пользователя;
    END;
    

    在这个命令之后,我的数据开始被正确写入。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5