Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysq]Problem z foreach i insert into.
ko1
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 21.08.2008

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


Witam, mam problem z wpisaniem do bazy mysql danych z tablicy. Najpierw wpisuje do tablicy dane z pliku xls, dane wczytuja sie prawidlowo. Potem gdy w petli foreach chce przez insert into wpisac do bazy te dane, wpisuje się do bazy tylko część danych. Gdy usune linijkę z insert into ta sama pętla wypisuje na ekran prawidlowo wszystkie wpisy tablicy, gdy jednak zamiast wypisania na ekran chce wpisac do tabeli mysql wpisuje się tylko część danych z tablicy. Z góry dziękuje. Kod:
CODE
$t = array_unique($wynik);

$data = date("Y-m-d");
foreach ($t as $value4) {

$czy2 = @mysql_query("select * from arty where mail = '$value4'");
$czy3 = @mysql_query("select * from mailinglist where email = '$value4'");

if(@mysql_num_rows($czy2) == 0 && @mysql_num_rows($czy3) == 0 ){

echo "\n";
echo "$value4 \n $n";

$dodaj = @mysql_query("INSERT INTO mailinglist (email, data, category) VALUES('$value4', '$data', $typ)") or die(mysql_error());

}
}
?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
WebCM
post
Post #2





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


Zdefiniowałeś zmienne $data i $typ?

Zainteresuj się rozszerzeniem MySQLi" title="Zobacz w manualu PHP" target="_manual i podpinaniem danych do zapytania. Masz wtedy pewność, że dane zostaną wysłane do serwera bezpiecznie (oczywiście jeśli pochodzą z zewnątrz - czyli od internauty - musisz je zabezpieczyć - np. aby nie wcisnął kodu HTML i nie wykradł informacji - htmlspecialchars" title="Zobacz w manualu PHP" target="_manual).

Ten post edytował WebCM 21.08.2008, 16:10:12
Go to the top of the page
+Quote Post
elemek
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 24
Dołączył: 14.08.2008

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


zapewne typ kolumny do której wpisujesz dane to varchar(255) spróbuj mediumtext w ten wszystko powinno się zmieścić ;]
Go to the top of the page
+Quote Post
franki01
post
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Cytat(WebCM @ 21.08.2008, 17:08:37 ) *
Zdefiniowałeś zmienne $data i $typ?

Zainteresuj się rozszerzeniem MySQLi" title="Zobacz w manualu PHP" target="_manual i podpinaniem danych do zapytania. Masz wtedy pewność, że dane zostaną wysłane do serwera bezpiecznie (oczywiście jeśli pochodzą z zewnątrz, musisz je zabezpieczyć - np. aby nie zawierały kodu HTML - htmlspecialchars" title="Zobacz w manualu PHP" target="_manual).

Nie htmlspecialchars, tylko mysqli_real_escape_string" title="Zobacz w manualu PHP" target="_manual - to ma znaczenie.

Może ta linijka:
Kod
if(@mysql_num_rows($czy2) == 0 && @mysql_num_rows($czy3) == 0 ){
sprawia, że niektóre dane nie są dodawane.

Daj na górze kodu $i = 0;, a potem bezpośrednio pod zapytaniem INSERT $i++;. Po wykonaniu pętli wyświetl $i i zobacz czy jest tyle samo dodanych rekordów w tabeli. Porównaj to z ilością emaili z danych wejściowych. Wynik napisz tu.

Ten post edytował franki01 21.08.2008, 16:16:28
Go to the top of the page
+Quote Post
ko1
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 21.08.2008

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


Dzieki za odpowiedz. Tak wszystkie zmienne są zdefiniowane. Dziwne jest to ze np, że gdy w tablicy jest kilkaset komórek, to wszystko wpisuje się dobrze, jednak gdy komórek jest np 10000 to wczytuje się tylko 1000(ten tysiąc wczytany jest też prawidłowo) jednak reszta staje, także dalsza cześć akrtyptu się nie wykonuje.

Franki, tego własnie próbowałem i ta dodatkowa iteracja jest prawidłowa, wynosi tyle ile powinno byc wpisów.
Go to the top of the page
+Quote Post
elemek
post
Post #6





Grupa: Zarejestrowani
Postów: 71
Pomógł: 24
Dołączył: 14.08.2008

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


hmm niejasno napisałeś, wiec problem jest nie z danymi w kolumnie a z ilością wierszy tak?

spróbuj zwiększyć limit czasu wykonania skryptu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

dodaj to na początek skryptu.

  1. <?php
  2. ?>


Ten post edytował elemek 21.08.2008, 16:21:40
Go to the top of the page
+Quote Post
franki01
post
Post #7





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Może skrypt wykonuje się za długo i jest przerywany.. set_time_limit" title="Zobacz w manualu PHP" target="_manual - spróbuj tego. Ustaw to na set_time_limit(0); i może wszystko się doda. Jeżeli robisz to na wykupionym hostingu, to ta komenda może czasami nie działać. Wtedy możesz też spróbować ini_set('max_execution_time', 0);, które z założenia powinno działać tak samo.

EDIT:
elemek mnie wyprzedził (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował franki01 21.08.2008, 16:23:23
Go to the top of the page
+Quote Post
ko1
post
Post #8





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 21.08.2008

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


Tak elemek i franki mają racje, wieelkieee dzięki ludzie, faktycznie limit wynosił 30 sekund i gdy komórek byo z 10000 to rzeczywiscie skrypt przerywał wykonanie. Jeszcze raz dzieki wielkie!
Go to the top of the page
+Quote Post

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: 30.09.2025 - 02:48