Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Trzy pytania do bardziej zaawansowany w MySQL i PHP, Trzy pytania do bardziej zaawansowany w MySQL i PHP
mako11
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.02.2012

Ostrzeżenie: (0%)
-----


Trzy pytania do bardziej zaawansowany w MySQL i PHP

1. Mam dwie tabele w bazie danych np:
Tabela1
|id|nazwisko|imię|data|liczba|
kolumna id jest kluczem podstawowym
Tabela2
|id|dane przetworzone|liczba przetworzone|
tu to samo id jest kluczem podstawowym
dane do tej tabeli będą wprowadzane dopiero po wyciągnięci i przetworzeniu
Czyli aby połączyć relatywnie te dwie tabele kluczem obcym ma być kolumna id ?

2. Jak zrobić aby każdy pojedynczy wiersz z Tabeli2 odpowiadał wierszowi z Tabeli1 , tak aby dane z wiersza tabeil1 id=1 były przetworzone i zapisane do wiersza tabeli2 o id=1 ?
Aby nie było przekłamań a dane były powiązane między tabelami.

3. Czy jest to odpowiedni sposób, po łączeniu do bazy danych MySQL dodawać wiele rekordów za pomocą pętli czy istnieje lepsze rozwiązanie?

  1. $db =new mysqli('localhost', 'test', 'test', 'baza');
  2. if (mysqli_connect_errno())
  3. {
  4. echo 'Błąd: Połączania z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
  5. }
  6.  
  7. for($x=0;$x<10;$x++)
  8. {
  9. $zapytanie = "insert into tabela (kolumna1 kolumna2) values('dane', 'dane');
  10. $wynik = $db->query($zapytanie);
  11. }





Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aniolekx
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

Ostrzeżenie: (0%)
-----


Dla relacji 1:1 czyli dla dowolnego rekordu z Tableli1 może istnieć co najwyższej jeden odpowiadający rekord w Tabeli2
wtedy Tablea2 musi mieć na kluczu obcym założone primary key (klucz podstawowy, co gwarantuje ze będzie unikalne) i założone Constraint (ograniczenie).
  1. CREATE TABLE `tablea2` (
  2. `id` int NOT NULL,
  3. `dane` text,
  4. `liczba` int,
  5. PRIMARY KEY (`id`),
  6. CONSTRAINT `FK1_tablea2` FOREIGN KEY (`id`) REFERENCES `tabela1` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
  7. )
  8. COLLATE='latin1_swedish_ci'
  9. ENGINE=InnoDB;

Wrzucanie INSERET'a w pętle nie jest optymalne, lepiej jest zrobić jeden INSERT, dla wszystkich danych:
  1. $zapytanie = "insert into tabela (kolumna1 kolumna2) values('dane', 'dane'), ('kolejne_dane', 'kolejne_dane'), ('i_tak_dalej_kolejne_dane', 'i_tak_dalej_kolejne_dane') ;
  2. $wynik = $db->query($zapytanie);
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 01:16