Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Porovnanie poľa z tabuľky s iným a pomocou PHP MySQL?

Najlepší spôsob porovnania poľa z jednej tabuľky s rôznymi hodnotami v inej tabuľke pomocou PHP a MySQL závisí od konkrétneho porovnania, ktoré musíte vykonať. Tu je niekoľko scenárov a ako ich zvládnuť:

Scenár 1:Kontrola, či existuje hodnota v inej tabuľke

Povedzme, že máte dve tabuľky:„Používatelia“ a „objednávky“. Chcete nájsť všetkých používateľov, ktorí zadali aspoň jednu objednávku.

* Tabuľka `Používatelia: `user_id`,` name '

* Tabuľka `Objednávky: `Order_id`,` user_id`, `Order_date`

PHP kód:

`` `php

$ conn =new mysqli ("your_db_host", "your_db_user", "your_db_password", "your_db_name");

if ($ conn-> connect_error) {

die ("Connection zlyhal:". $ conn-> connect_error);

}

$ sql ="Vyberte U.User_id, U.Name

Od používateľov u

Kde existuje (

Vyberte 1

Z objednávok o

Kde O.User_id =u.user_id

) “;

$ result =$ conn-> query ($ sql);

if ($ result-> num_rows> 0) {

while ($ row =$ result-> fetch_assoc ()) {

echo "ID používateľa:". $ riadok ["user_id"]. " - meno:". $ riadok ["name"]. „
„;

}

} else {

echo "0 výsledkov";

}

$ conn-> close ();

?>

`` `

Používa sa „existujú“ subquery, čo je vo všeobecnosti najúčinnejším spôsobom, ako skontrolovať existenciu. Skontroluje iba, či v tabuľke „Objednávky“ existuje zodpovedajúci `user_id`, a nie načítať žiadne údaje zo samotnej tabuľky„ Orders “.

Scenár 2:Porovnanie hodnôt a nájdenie rozdielov

Povedzme, že máte dve tabuľky so spoločným poľom a chcete nájsť riadky, kde sa hodnoty v inom poli líšia.

* Tabuľka `Products`: `produkt_id`,` cena`

* Tabuľka `cena_history`: `Product_id`,` Cena`, `dátum`

Chcete nájsť produkty, v ktorých sa súčasná cena v `Products 'líši od najnovšej ceny v` cena_history`.

PHP kód:

`` `php

$ conn =new mysqli ("your_db_host", "your_db_user", "your_db_password", "your_db_name");

if ($ conn-> connect_error) {

die ("Connection zlyhal:". $ conn-> connect_error);

}

$ sql ="Vyberte P.Product_id, P.Price AS Current_Price, Ph.Price AS History_Price

Z produktov P

Pripojte sa (vyberte produkt_id, max (dátum) ako max_date zo skupiny Price_history podľa produktu_id) ako ph_max na p.product_id =ph_max.product_id

Pripojte sa k cene_history pH na ph_max.product_id =ph.product_id a ph_max.max_date =ph.date

Kde P.Price! =Ph.Price ";

$ result =$ conn-> query ($ sql);

// ... (Zvyšok kódu na spracovanie výsledkov je rovnaký ako scenár 1)

$ conn-> close ();

?>

`` `

Toto využíva subkrotériu na nájdenie najnovšej ceny od „Price_history“ pre každý produkt a potom sa k nemu pripojí s tabuľkou „Products“ na porovnanie cien.

Scenár 3:Nájdenie zápasov založených na viacerých poliach

Ak potrebujete porovnávať na základe viacerých polí, upravte klauzulu „kde“ podľa toho:

`` sql

Kde u.user_id =o.user_id a u.city =o.city

`` `

Dôležité úvahy:

* Manipulácia s chybami: Kód obsahuje základné spracovanie chýb pre pripojenie databázy. Pridajte robustnejšie spracovanie chýb pre výrobné prostredie.

* Pripravené výroky: Pokiaľ ide o bezpečnosť, vždy používajte pripravené vyhlásenia na zabránenie zraniteľnostiam vstrekovania SQL, najmä ak do svojich dopytov začleňujete vstup používateľa.

* Optimalizácia databázy: V prípade veľkých súborov údajov zvážte pridanie indexov do polí, ktoré porovnávate, aby ste zlepšili výkon dotazu.

* Typy údajov: Uistite sa, že typy údajov z polí, ktoré porovnávate, sú kompatibilné.

Nezabudnite nahradiť `" your_db_host "`, `" your_db_user "`, `" your_db_password "` a `" your_db_name "` so svojimi skutočnými povereniami databázy. Vyberte scenár a kód, ktorý najlepšie vyhovuje vašim potrebám porovnávania. Ak máte konkrétnejšiu otázku, poskytnite tabuľkové štruktúry a presné porovnanie, ktoré chcete vykonať, a môžem vám dať viac prispôsobeného kódu.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené