Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kopia MySql z poziomu php
Forum PHP.pl > Forum > PHP
maciekzl
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.
crash
Twój skrypt zajął całe 25 MB dozwolone dla skryptów php w konfiguracji.
maciekzl
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?
L_Devil
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
maciekzl
To nie jest mój kod. Jeśli ktoś może to proszę o poprawienie błędów bo ja jestem zielony.
TomASS
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...
maciekzl
Otworzyłem to w editplusie i nic z tego nie kumam sad.gif
Diablos
Musisz poprostu poprawic skrypt ....
A jezeli dopiero zaczynasz, poszukaj gotowego, dzialajacego rozwiazania winksmiley.jpg
maciekzl
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.
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.