我的数据库中有两个表,每个表都有一个名为Catergory的列。
Categories Table -
id | category_name
1 : basic
2 : midlevel
3 : highlevel
4 : profesional
Product Table -
id | product | category_name
1 : adsl 1G : basic
2 : adls 2G : midlevel
3 : adsl 3G : highlevel
4 : adsl 4G : profesional当我更新categories表中的*category_name*时,我也想在Products表中更改它,但我不确定如何做到这一点。
我找不到答案,因为我不知道如何正确表达。
任何帮助都将不胜感激。
我的update.php现在是什么样子:
db_update("UPDATE category SET
`category_name` = '".$_POST['category_name']."'
WHERE category_id = '".$id."'");应该是什么样子的:?
{代码在这里}
注意:“已修复-我忘记将旧值发送到save.php文件,因此$id永远不知道要更新什么”。
发布于 2012-04-13 20:23:20
您可以只运行两个查询来更改这两个名称:
<?php
mysql_query("UPDATE categories SET category_name='" . $catname . "' WHERE category_name='basic'");
mysql_query("UPDATE product SET category_name='" . $catname . "' WHERE category_name='basic'");
?>如果要在一个字符串中完成,可以使用多个查询、联接查询或存储过程来完成。
一个字符串中的多个查询:
<?php
mysql_query("
mySqlQuery(UPDATE categories SET category_name='" . $catname . "' WHERE category_name='basic';)
mySqlQuery(UPDATE product SET category_name='" . $catname . "' WHERE category_name='basic';)
");
?>联接查询:
<?php
mysql_query("
UPDATE `product`,`categories`
SET `product`.`category_name` = '" . $catname . "',
`categories`.`category_name` = '" . $catname . "'
WHERE `items`.`id` = '" . $catname . "'
");
?>如果上述方法都不起作用,我建议更改您的表,这样就没有匹配的名称,而是匹配的ID。
您将看到以下内容:
Categories Table -
id | category_name
1 : basic
2 : midlevel
3 : highlevel
4 : profesional
Product Table -
id | category_ID | product
1 : 1 : adsl 1G
2 : 2 : adls 2G
3 : 3 : adsl 3G
4 : 3 : adsl 4G发布于 2012-04-13 20:23:35
UPDATE Categories t1
JOIN Product t2 ON (t1.category_name = t2.category_name )
SET t1.category_name = ?
t1.category_name = ?
WHERE t1.id = ?但是您感觉自己的数据模型很丑陋。去规格化可能更好。
让product表引用category表:
Product Table -
id | product | category_ID
Categories Table -
id | category_name发布于 2012-04-13 20:24:46
我建议您使用category表的'id‘字段将products表链接到categories表。这样,您将被链接到相同的类别,并且可以更改类别名称,而不必担心破坏其他任何内容,因为您仍将链接到相同的类别id。
请考虑以下几点:
Categories Table - id | category_name 1 : basic 2 : midlevel 3 : highlevel 4 : profesional
Product Table - id | product | category_id l : adsl 1G : basic 2 : adls 2G : midlevel 3 : adsl 3G : highlevel 4 : adsl 4G : profesional你目前的方式似乎很难维护,因为将来你可能需要添加另一个以某种方式使用类别的列,并且必须不断地更改所有这些表的'category_name‘列,最终可能会非常混乱。通过链接到id,您可以在category表中进行任何您喜欢的更改,而不必担心丢失到任何其他表的链接(这就是当前表将发生的情况)。
编辑:您可以通过使用连接(如内部连接)来获取有关类别的任何信息。我认为这将是一个更好的方法。另外,考虑添加products表中的'category_id‘列与category表中的'id’列之间的关系。这将确保类别不会在仍有产品链接的情况下被删除。
https://stackoverflow.com/questions/10140685
复制相似问题