如何使用SQL和PHP更新这些表条目?

时间:2010-05-24 03:29:26

标签: php mysql sql sql-update

我正在处理资产数据库问题。

我将资产输入数据库。每个对象都是资产,并且在资产表中包含变量。对象也是一种资产。在此示例中,类型为server。

以下是用于检索所有必要数据的查询:

SELECT asset.id
,asset.company
,asset.location
,asset.purchaseDate
,asset.purchaseOrder
,asset.value
,asset.type
,asset.notes
,server.manufacturer
,server.model
,server.serialNumber
,server.esc
,server.warranty
,server.user
,server.prevUser
,server.cpu
,server.memory
,server.hardDrive
FROM asset
LEFT JOIN server
    ON server.id = asset.id
WHERE asset.id = '$id'

然后我将所有结果分配到单个php变量中。

如何编写查询/脚本来更新资产?

2 个答案:

答案 0 :(得分:1)

由于您(可能)资产和服务器之间存在一对多关系,因此您需要单独更新它们:

UPDATE assets SET
    company = '$company',
    location = '$location', ...
WHERE id = $asset_id;

UPDATE servers SET
    manufacturer = '$manufacturer',
    model = '$model', ....
WHERE $id = $server_id

您必须执行第二次查询 n 次,其中 n 是与特定server相关联的asset的记录数。

另外,我希望你对这些变量保持谨慎 - 我们不希望Bobby Tables在这里。

<强>更新

好的,所以你可以在一个表中有一对一。在那种情况下,为什么要使用LEFT JOINserver不应该是asset,对吗?无论如何,回答,从我的头顶回答:

UPDATE assets, servers
SET
    assets.company = ...,
    servers.manufacturer = ...
WHERE assets.id = $id
AND servers.id = $id

答案 1 :(得分:0)

由于资产表和服务器表之间有1-1连接。它基本上是同一张桌子。如果您可以控制数据库布局,我会重新考虑它。

如果没有,你将不得不做两个更新电话,每个表一个,如@Amadan给你看