Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> pętla i 2 te same wpisy
szmerak
post 16.11.2011, 19:28:25
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Witam!
Mam problem z pętlą i Insertem do bazy...
Napisałem skrypcik który kopjuje z mojej starej bazy do nowej...
czyli coś takiego
Select from stara baza
while($d = array)
{
i insert into nowa tabela
}

i przy tym pojawia się problem ponieważ dość często dodaje wpis 2x a nie wiem dlaczego tak jest
proszę o pomoc

probowalem nawet zwolnic petle
for($x=0;$x<10000;$x++)
ale nic to nie dalo

Ten post edytował szmerak 16.11.2011, 19:30:05
Go to the top of the page
+Quote Post
wewior
post 16.11.2011, 20:09:34
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 8
Dołączył: 24.09.2003

Ostrzeżenie: (10%)
X----


Rozumiem że z poziomu bazy jest czysto tzn nie ma żadnych trigerów czy funkcji który by to mogły generować?
Sprobuj może podesłać cały skrypt, może jakiś drobny błąd, bo domyślam się że dane jakoś obrabiasz w miedzyczasie....
Drugie pytanie czy wrzucałeś sobie może te dane do jakiegoś pliku żeby się upewnić że nie ma jakichś dubli pobieranych przez php i stąd te podwójne wpisy? Mało to prawdopodobne ale lepiej sprawdzić różne możliwości.


--------------------
- - -
PHP, HTML, JS, Quick.Cms v6.4, Quick.Cart v6.7, Simlery
- - -
Go to the top of the page
+Quote Post
mortus
post 16.11.2011, 20:14:11
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Takie pytanie: dane przenosisz pomiędzy dwiema różnymi bazami danych, czy pomiędzy dwiema różnymi tabelami w jednej bazie danych?
Go to the top of the page
+Quote Post
szmerak
post 16.11.2011, 20:37:19
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


powiem ci że nie dzieje się to gdy Blokuje tabele LOCK TABLE
ale wtedy nie umiem pobrać mysql_last_id...
Ja przypuszczam że skrypt po prostu nachodzi na siebie pętla "popiepsza" tak szybko że czasami doda doubla.

EDIT: pomiędzy dwoma bazami
Go to the top of the page
+Quote Post
mortus
post 16.11.2011, 21:01:08
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Jeśli masz dużo rekordów i wstawiasz nowe rekordy wykonując zapytanie INSERT jedno po drugim, to być może za bardzo obciążasz serwer MySQL. Rozwiązaniem może być multi INSERT co np. 50 rekordów:
  1. $results = mysql_query('SELECT * FROM `tabela`');
  2. $i = 1;
  3. $sql = 'INSERT INTO `nowa_tabela` (`kolumna_1`, `kolumna_2`) VALUES ';
  4. while($row = mysql_fetch_assoc($results)) {
  5. $sql .= '('.$row['stara_kolumna_1'].', '.$row['stara_kolumna_2'].'),';
  6. if($i == mysql_num_rows($results) || $i%50 == 0) {
  7. $sql = substr($sql, 0, -1);
  8. mysql_query($sql);
  9. $sql = 'INSERT INTO `nowa_tabela` (`kolumna_1`, `kolumna_2`) VALUES ';
  10. }
  11. $i++;
  12. }
Go to the top of the page
+Quote Post
szmerak
post 17.11.2011, 16:13:48
Post #6





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


rozwiązałem to na słój sposób tongue.gif zrobiłek tkz. Czyściciela i puszczam go cronem co jakiś czas tongue.gif
Mi to wystarczy nie bede za duzo kombinował smile.gif

Mortus to twoje rozwiązanie działa jak najbardziej smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 19:24