Nasıl SQL ve PHP ile bu tablo girişleri güncelleştirmek istiyorsunuz?

2 Cevap php

Ben bir Varlık Veritabanı sorun üzerinde çalışıyorum.

Ben bir veritabanına varlıkları girin. Her nesne bir varlık ve varlık tablo içinde değişkenleri vardır. Bir amacı, ürünün bir türüdür. Bu örnekte türü sunucusudur.

Burada gerekli tüm verileri almak için Query:

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'

Daha sonra tek php değişkenleri içine tüm sonuçları atayın.

Nasıl bir varlık güncellemek için bir sorgu / senaryo yazmak istiyorsunuz?

2 Cevap

Eğer varlık ve sunucular arasında (muhtemelen) bir-çok ilişkisi olduğundan, onları ayrı ayrı güncellemeniz gerekir:

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

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

Sen n server, özellikle asset ile ilişkili kayıtların sayısı ikinci sorguyu n kez yapmak zorunda kalacaktır.

Ayrıca, ben ile bu değişkenler dikkatli konum umut yok - İstediğimiz Bobby Tables burada yok.

UPDATE:

Tamam, bu yüzden bir-belki-bir kaç tabloları içine var. Bu durumda neden hiç LEFT JOIN kullanabilir? Bir olasılık olmamalıdır bir server Doğru, bir asset zaten değil mi? Neyse, kafamın üst kapalı, cevap:

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

Eğer varlık masa ve sunucu tablosu arasında bir bağlantı var 1-1 beri. Bu aslında aynı tablodur. Eğer veritabanı düzeni üzerinde kontrol varsa, bunu tekrar düşünmek istiyorum.

Eğer değilse Amadan @ gibi her masaya iki güncelleme aramaları, birini yapmak zorunda kalacaktır size gösterdi