Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kopia MySql z poziomu php
maciekzl
post 24.01.2006, 14:17:07
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.09.2005

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


Znalazłem taki skrypcik do kopii bazy MySql:

  1. <?
  2.  
  3.  
  4. $password    = "test";   // hasło jakim chcesz przywracać kopię zapasow&plusmn;
  5. $bazadanych  = "xx";  // Baza danych której kopię Chcesz zrobić
  6. $host        = "localhost"; // Nazwa Hosta MySQL
  7. $user        = "xx";   // Nazwa użytkownika MySQL
  8. $haslo       = "xx";   // Hasło dostępu do mysql
  9.  
  10.  
  11. $baza=mysql_connect("$host", "$user", "$haslo");
  12.  
  13. mysql_select_db("$bazadanych", $baza);
  14.  
  15. $tabele=mysql_list_tables($bazadanych);
  16. $liczbatabel=mysql_num_rows($tabele);
  17. for($j=0; $j<$liczbatabel; $j++)
  18. {
  19. $tabela=mysql_tablename($tabele, $j);
  20. $zapytanietworztabele[$j]="\$dodaj[]=\"DROP TABLE $tabela\";\n\$dodaj[]=\"CREATE TABLE $tabela(";
  21. $dodopisu[$j]="$$tabela=\"INSERT INTO $tabela(";
  22.  
  23. $kolumny=mysql_db_query($bazadanych, "SHOW FIELDS FROM $tabela");
  24. while($kolumna=mysql_fetch_array($kolumny)){
  25. $zapytanietworztabele[$j].="$kolumna[Field] $kolumna[Type] not null, ";
  26. $kolumna1[]="$kolumna[Field]";
  27. $dodopisu[$j].="$kolumna[Field], ";
  28. }
  29. $zapytanietworztabele[$j]=substr($zapytanietworztabele[$j], 0, -2);
  30. $zapytanietworztabele[$j].=")\";";
  31. $dodopisu[$j]=substr($dodopisu[$j], 0, -2);
  32. $dodopisu[$j].=") VALUES\";";
  33.  
  34. $wybierzdaneztabeli1="SELECT * FROM $tabela";
  35. $wybierzdaneztabeli2=mysql_query($wybierzdaneztabeli1, $baza);
  36. while($dane=mysql_fetch_array($wybierzdaneztabeli2)){
  37. $ztabeli="\$dodaj[]=\"$$tabela(";
  38. for($i=0;$i<count($kolumna1);$i++){
  39. $nazwagh="$kolumna1[$i]";
  40. $$nazwagh=$dane[$nazwagh];
  41. $dana=$$nazwagh;
  42. $ztabeli.="\\\"$dana\\\", ";
  43. }
  44. $ztabeli=substr($ztabeli, 0, -2);
  45. $ztabeli.=")\";";
  46. $dopiszdotabeli[]=$ztabeli;
  47. }
  48. $kolumna1="";
  49. }
  50.  
  51. $dopisz="<HTML>
  52. <HEAD>
  53. <META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=iso-8859-2\">
  54. <title>KOPIA ZAPASOWA MySQL BAZY DANYCH $bazadanych</title>
  55. <body bgcolor=\"#A5A5FF\" text=\"white\">
  56. <?
  57. /*
  58.  
  59. ZAPISYWANIE KOPII ZAPASOWEJ MySQL'a
  60.  
  61. POWERED BY OCCULKOT
  62.  
  63. die4pink_pain / dieforpaulina 
  64.  
  65. occulkot@skrzynka.pl
  66. */
  67. if(empty(\$backup)){
  68. echo\"<form method=post action=$bazadanych.php3>
  69. <input type=password name=backup>
  70. </form>\";
  71. }elseif(\$backup==\"$password\"){
  72. echo\"<h1>Przywracam kopię zapasow&plusmn;</h1>\";
  73. \$baza = @mysql_connect(\"$host\",\"$user\",\"$haslo\");
  74. mysql_select_db(\"$bazadanych\"\$baza);
  75.  
  76. ";
  77. for($j=0;$j<count($zapytanietworztabele);$j++){
  78. $dopisz.="$zapytanietworztabele[$j]\n";
  79. }
  80. for($j=0;$j<count($dodopisu);$j++){
  81. $dopisz.="$dodopisu[$j]\n";
  82. }
  83. for($j=0;$j<count($dopiszdotabeli);$j++){
  84. $dopisz.="$dopiszdotabeli[$j]\n";
  85. }
  86.  
  87. $dopisz.="
  88. \$ii=count(\$dodaj);
  89.  
  90. for(\$i=0;\$i<\$ii;\$i++){
  91. \$zapytanie=mysql_query(\$dodaj[\$i], \$baza);
  92. Echo\"Wykonano <kbd>\$dodaj[\$i]</kbd><br>\";
  93. }
  94. }
  95.  
  96. ?>
  97. ";
  98.  
  99. $backupfile=fopen("$bazadanych.php3", "w");
  100. fputs($backupfile, $dopisz);
  101.  
  102. ?>


Gdy to uruchamiam wyskakuje:

Kod
Fatal error: Allowed memory size of 26214400 bytes exhausted (tried to allocate 35 bytes) in /xxx/test/mysql.php3 on line 36


Co jest przyczyną błedu i jak to naprawić? Proszę o pomoc.

Ten post edytował maciekzl 24.01.2006, 14:18:07
Go to the top of the page
+Quote Post
crash
post 24.01.2006, 14:22:11
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Twój skrypt zajął całe 25 MB dozwolone dla skryptów php w konfiguracji.


--------------------
Go to the top of the page
+Quote Post
maciekzl
post 24.01.2006, 14:27:22
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.09.2005

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


Acha sad.gif Wnioskuję, że mam za dużą bazę... Dobrze myśle?
Co zmienić w kodzie, żeby to poprawnie działało? Da się coś z tym zrobić?

Ok, spróbowałem z inną bardzo malutką bazą danych. Tym razem strona jest cała biała. Nic się nie dzieje. Czy ktoś wie o co chodzi?

Ten post edytował maciekzl 24.01.2006, 15:30:22
Go to the top of the page
+Quote Post
L_Devil
post 24.01.2006, 18:02:19
Post #4





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


A zobacz na swój pokolorowany kod..... albo nie używasz w nim żadnego polecenia wyświetlającego tekst (a Echo w cudzysłowiach znalazły się z zamierzonym działaniem), albo roi sie w nim od literówek.

PS> Stosuj formatowanie kodu. Cztery spacje i od razu wszystko widać lepiej biggrin.gif


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
maciekzl
post 25.01.2006, 13:45:21
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.09.2005

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


To nie jest mój kod. Jeśli ktoś może to proszę o poprawienie błędów bo ja jestem zielony.
Go to the top of the page
+Quote Post
TomASS
post 25.01.2006, 16:27:15
Post #6





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Zrób tak jak Ci ludzie mówią - włącz dowolny edytor z kolorowanią składni i zobaczysz ile rzeczy jest źle, nikt za Ciebie nie będzie tego poprawiał bo to dosyć czasochłonne i z powodzeniem nawet "zielony" to może zrobić. Zwróć uwagę na:
  1. <?php
  2.  
  3. $zapytanietworztabele[$j]="\$dodaj[]=\"DROP TABLE $tabela\";\n\$dodaj[]=\"CREATE TABLE $tabela(";
  4.  
  5. ?>


oraz:
  1. $dopisz="<HTML>
  2. <HEAD>
  3. <META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=iso-8859-2\">
  4. <title>KOPIA ZAPASOWA MySQL BAZY DANYCH $bazadanych</title>
  5. <body bgcolor=\"#A5A5FF\" text=\"white\">
  6. <?
  7. /*
  8.  
  9. ZAPISYWANIE KOPII ZAPASOWEJ MySQL'a
  10.  
  11. POWERED BY OCCULKOT
  12.  
  13. die4pink_pain / dieforpaulina 
  14.  
  15. occulkot@skrzynka.pl
  16. */
  17. if(empty(&#092;$backup)){
  18. echo&#092;"<form method=post action=$bazadanych.php3>
  19. <input type=password name=backup>
  20. </form>&#092;";
  21. }elseif(&#092;$backup==\"$password\"){
  22. echo&#092;"<h1>Przywracam kopię zapasow&plusmn;</h1>\";
  23. &#092;$baza = @mysql_connect(\"$host\",\"$user\",\"$haslo\");
  24. mysql_select_db(&#092;"$bazadanych\", \$baza);
  25.  
  26. ";
  27.  
  28. ?>

i wiele innych. Trzeba powstawiać odpowiednie znaki (np. ") w niektórych miejscach...


--------------------
Go to the top of the page
+Quote Post
maciekzl
post 25.01.2006, 17:13:34
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.09.2005

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


Otworzyłem to w editplusie i nic z tego nie kumam sad.gif
Go to the top of the page
+Quote Post
Diablos
post 25.01.2006, 23:12:35
Post #8





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


Musisz poprostu poprawic skrypt ....
A jezeli dopiero zaczynasz, poszukaj gotowego, dzialajacego rozwiazania winksmiley.jpg
Go to the top of the page
+Quote Post
maciekzl
post 26.01.2006, 11:59:42
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.09.2005

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


Niestety nie umiem go poprawić sad.gif Bardzo proszę o poprawienie.
To miało być gotowe działające rozwiązanie, niestety nie działa, a nic innego nie znalazłem.
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: 28.06.2025 - 05:55