Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] gdzie jest bład ?
Forum PHP.pl > Forum > Przedszkole
shtoc
Witam mam taki skrypcik ktory powinien pobirac z bazy co 5 rekord i laczyc 5 po nim w jeden i dodawac do mowej bazy.
wszystko niby super ale w kazdej petli zaczyna od zerowego rekordu i laczy 5 kolejnych czyli w efekcie dostaje 5 razy to samo.
to jest print_r z sql :

SELECT * FROM duzo LIMIT 0,5SELECT * FROM duzo LIMIT 5,5SELECT * FROM duzo LIMIT 10,5SELECT * FROM duzo LIMIT 15,5SELECT * FROM duzo LIMIT 20,5

czyli niby wszystko ok!! zmienia sie zapytanie ale w efekcie nie daje czego powinien.

czy ktos moze mi powiedziec gdzie jest blad??

  1. <?php
  2. $li=0;
  3.  
  4. for($i=0;$i<5;$i++)
  5. {
  6.    
  7. $pol=mysql_connect('localhost', 'admin', 'haslo') or die('Błąd połączenia: '.mysql_error());
  8. mysql_selectdb('test') or die('Błąd wyboru bazy: '.mysql_error());
  9. mysql_query("SET NAMES utf8");
  10. $sql = "SELECT * FROM duzo LIMIT $li,5";
  11. $res = mysql_query($sql);
  12.  
  13. print_r($sql);
  14.  
  15. while($row = mysql_fetch_array($res))
  16. {
  17.   $a.=$row['cont'];
  18. }
  19.    $n = 3;
  20.    $words = explode(" ", $a);
  21.    $firstN = array_slice($words, 0, $n);
  22.    $fir = implode(" ", $firstN);
  23.  
  24. $pdo = new PDO('mysql:host=localhost;dbname=test', 'admin', 'haslo');
  25. $pdo ->query("SET NAMES utf8");
  26. $sql = "INSERT INTO tekst (`tytul`,`cont`) VALUES (:tytul,:cont)";
  27. $statement = $pdo->prepare($sql);
  28. $statement->bindValue(':tytul', $fir, PDO::PARAM_STR);
  29. $statement->bindValue(':cont', $a, PDO::PARAM_STR);
  30. $statement->execute();
  31.  
  32. //echo mysql_errno() . ": " . mysql_error();
  33. $li+=5;
  34. //echo $licznik;
  35. unset ($res);
  36. }
  37.  
  38. ?>
EarthCitizen
Na końcu iteracji daj $a = '';
  1. <?php
  2. for (...) {
  3. // tutaj Twój kod
  4. // i przed } dajesz
  5. $a = '';
  6. }
  7. ?>


Edit:

set_time_limit(0) - daj na początku skryptu
mysql_close() - daj na końcu skryptu

Skąd użycie PDO w pętli? Zdecyduj się czy używasz PDO czy funkcji z rodziny mysql_...() Łączysz się niepotrzebnie z bazą danych 2 razy.
shtoc
kurde działa a mozesz mi to wytłumaczyc?? w czym to $a= ' '; pomogło?

Cytat(EarthCitizen @ 29.01.2009, 13:02:02 ) *
set_time_limit(0) - daj na początku skryptu
mysql_close() - daj na końcu skryptu

Skąd użycie PDO w pętli? Zdecyduj się czy używasz PDO czy funkcji z rodziny mysql_...() Łączysz się niepotrzebnie z bazą danych 2 razy.


jednym polaczeniem pobieram dane z jednej tabeli a drugim wysylam do drugiej tabeli.
EarthCitizen
Cytat
jednym polaczeniem pobieram dane z jednej bazy a drugim wysylam do drugiej bazy.

Nie zwróciłem uwagi, że to druga baza, ale to i tak źle robisz, połącz się z dwiema bazami przed pętlą.

Cytat
kurde działa a mozesz mi to wytłumaczyc?? w czym to $a= ' '; pomogło?


Pomogło dlatego, że każda kolejna iteracja dopisywała do już istniejącej zmiennej $a, bo dałeś operator konkatenacji (.=). Tak w ogóle to daj $a = ''; przed pętlą while zamiast przed końcem for, będzie bardziej poprawnie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.