gpt4 book ai didi

php - 通过 "CRUD"SQL PHP 创建管理数据库的网页

转载 作者:行者123 更新时间:2023-11-30 23:02:27 25 4
gpt4 key购买 nike

我正在用 MySQL 练习 PHP,并且我正在创建一个网页,其中列出了查询表中的所有详细信息 - 这部分工作得很好。然后,我希望用户能够单击表中的链接,这会将用户定向到该特定表条目的 CRUD 页面。

我拥有的代码与我的原始页面配合使用时效果很好,但是,由于我试图将 3 个表连接在一起,这对我来说使事情变得复杂。我现在拥有的工作代码仅适用于一张表。我正在努力想出关于如何更改我的代码的想法,以便它可以促进我拥有的三个表的联接。

这是我的表格:

ACT 演出 field sname sname sname(这些不包含相同的值。)id(2) id id(1) 行动(2) field (1)

现在是代码分解。

这是允许我更新表中条目的代码(尽管我希望它更新 3 个而不是一个)

if (!count($errors)) {
// Data is valid and can be committed to database
if ('Update' == $_REQUEST['action']) {
$show = 'table';
// Data for gig can be safely updated
$sql = 'UPDATE gig SET sname=:sname, start=:start
WHERE id=:id';
$res = $db->prepare($sql);
if (!$res->execute(array(':sname' => $details['sname'],
':id' => $details['id'],
':start' => $details['start'],
))) {
$errors['sql'] = sprintf("%s (id %s) could not be updated",htmlentities($_POST['sname']),$_POST['id']);
$show = 'form';
} else {
$status = sprintf("%s updated",htmlentities($details['sname']));
}

现在是从网页创建新条目的代码。同样,这段代码只为一个表插入数据,而不是我想要的 3 个。但我们会在底部谈到这一点。

} else { // Create action
// Data for gig can be safely created
$sql = 'INSERT INTO gig (id,sname,start)
VALUES (:id,:sname,:start)';
$res = $db->prepare($sql);
if (!$res->execute(array(':sname' => $details['sname'],
':id' => $details['id'],
':start' => $details['start'],
))) {
$errors['sql'] = sprintf("%s (id %s) could not be created (Has the id already been used?)",htmlentities($_POST['country']),$_POST['id']);
$show = 'new';
} else {
$status = sprintf("%s created",htmlentities($details['sname']));
}
}
}

所以我的目标是在我的代码中实现三个列(sname),我知道它们都有冲突,但是当我设法打印 3 条评论中的所有详细信息时,我绕过了这一点。

这是代码。

SELECT g.id AS gig_id, g.sname AS gig_name, v.sname AS venue_name, a.sname AS act_name FROM gig AS g, venue AS v, act AS a WHERE g.venue=v.id AND g.act=a.id

基本上我要问的是,我将如何调整上述陈述以适应我的 CRUD 陈述,我希望我已经解决了问题部分,我只需要引导正确的方向?

在此先感谢您的帮助。

最佳答案

您可以使用类似下面的查询来完成此操作:

/* insert */
insert into venue values ();
set @gig_venue := LAST_INSERT_ID();
insert into act values ();
set @gig_act := LAST_INSERT_ID();
insert into gig values(@gig_venue, @gig_act /*, etc */);

/* update */
select venue, act from gig where id = @gig_id into @venue, @act;
update venue set foo=1 where id = @venue;
update act set bar=1 where id = @act;
update gig set baz=1 where id = @gig_id;

/* update in a single statement (no way to do with insert though)*/
update gig
join venue on venue.id = gig.venue
join act on act.id = gig.act
set foo=1,
bar=2;

但是,您要么需要将它们放入事务中,要么非常小心地实现失败时的手动回滚。

关于php - 通过 "CRUD"SQL PHP 创建管理数据库的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373306/

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