gpt4 book ai didi

php - 在一个php中的不同数据库中插入和更新

转载 作者:行者123 更新时间:2023-11-29 16:16:33 25 4
gpt4 key购买 nike

如何一起更新和插入

        require_once ('database.php'); 

$name = mysql_real_escape_string ($_REQUEST["name"]);
$course = mysql_real_escape_string ($_REQUEST["course"]);
$email = mysql_real_escape_string ($_REQUEST["email"]);
$contact = mysql_real_escape_string ($_REQUEST["contact"]);
$Date = mysql_real_escape_string ($_REQUEST["Date"]);

$sql = "SELECT * FROM registerlist WHERE name = '" . $name . "'";
$result = mysql_query ($sql, $dbconn);

if (mysql_num_rows ($result) > 0) {
$resultStr = header("Location:blog.php");

} else {

$result = "SELECT * FROM courselist WHERE cname = '" . $course
. "'";
$row=mysql_fetch_row($result);

$sql = "INSERT INTO registerlist (name, Course, Email, Contact,
Date) VALUES ('" . $name . "', '" . $course . "', '" . $email . "', '" .
$contact . "','" . $date . "')";

$result1= mysql_query($sql, $dbconn);
$result =mysql_query("UPDATE courselist SET $Row['slot'] =
'$Row['slot'] - 1 '");
if ($result1) {
$resultStr = header("Location:blog.php");

}

}

echo json_encode($resultStr);

如果该人注册了类(class),类(class)槽位将减1,并且学生文档将插入注册列表数据库中。

最佳答案

我希望我理解正确:您想在将记录插入 registerlist 表的同时更新 courselist 表吗?这可以使用触发器( https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html ,如果两个数据库在同一 SQL Server 上运行)和/或表锁( https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html )来完成:

  1. 无触发器

    • 锁定表类(class)列表
    • 将记录插入registerlist
    • 更新表类(class)列表
    • 发布表类(class)列表
  2. 带触发器您需要一个在写入 registerlist 表之前锁定表 courselist 的触发器,以及一个在写入 courselist 表后更新 courselist 并释放锁定的触发器。 注册列表。在这种情况下,您只需从 PHP 代码将记录插入到 registerlist 中,表锁定和 courselist 更新将由 SQL 服务器内的触发器完成。

无论如何,您都不能同时写入两个表,因为没有 SQL 语句可以做到这一点。但是使用锁你可以模拟这样的行为。

定义 SQL 语句的目标表时,如果连接每个默认值使用不同的数据库,则可以在前面添加表数据库名称,例如 databaseName.tableName

但是评论中的 aynber 是绝对正确的 - 你应该尽快远离 mysql_*!

编辑:这个 SQL 示例应该显示表锁定是如何工作的(所有相关信息都可以在上面链接的 MySQL 文档中找到):

LOCK TABLES courselist WRITE;
INSERT INTO registerlist …;
UPDATE courselist …;
UNLOCK TABLES;

您需要一个WRITE锁,因为您要写入表。来自其他 session 的其他读、写或锁定语句将被阻止,直到您释放锁。

READ 锁将防止表被任何 session 修改。写入(和写入锁定)尝试将被阻止,直到您释放锁,并且其他 session 中的所有其他 READ 锁也被释放。

关于php - 在一个php中的不同数据库中插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54748891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com