Guest User

Untitled

a guest
Oct 7th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. error_reporting(E_ALL);
  2.  
  3. set_time_limit(0);
  4. date_default_timezone_set('Europe/Amsterdam');
  5.  
  6. $nocache = 'SQL_NO_CACHE ';
  7. $username = 'root';
  8. $password = 'usbw';
  9. $hostname = 'localhost';
  10. $port = '3307';
  11.  
  12. $enter = (php_sapi_name() == "cli") ? PHP_EOL : '<br />';
  13.  
  14. $update = false;
  15.  
  16. echo '<h2>Export Mysql Structure & Data to ZIP</h2>' . $enter . $enter;
  17. flush();
  18. try {
  19. $con = "mysql:host=" . $hostname . ";port=" . $port;
  20. $pdoCon = new PDO($con, $username, $password, array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
  21. $pdoCon->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
  22.  
  23. $dbs = $pdoCon->query("SHOW DATABASES")->fetchAll();
  24.  
  25. echo '<pre>' . $enter;
  26. foreach ($dbs as $database) {
  27. if (!in_array($database[0], array('information_schema', 'performance_schema', 'phpmyadmin', 'mysql'))) {
  28. flush();
  29. echo date("Y-m-d H:i:s") . '::database: ' . $database[0] . $enter;
  30. $pdoCon->query("USE `" . $database[0] . "`");
  31.  
  32. $tables = $pdoCon->query("SHOW TABLES")->fetchAll();
  33.  
  34. foreach ($tables as $table) {
  35. flush();
  36. echo date("Y-m-d H:i:s") . '::--table: ' . $table[0] . ' [';
  37.  
  38. $zip = new ZipArchive;
  39. $res = $zip->open($database[0] . '-mysql.zip', ZipArchive::CREATE);
  40. $locate = $zip->locateName($database[0] . '-' . $table[0] . '-scheme.sql');
  41. $zip->close();
  42.  
  43. if ($locate == false OR $update == true) {
  44. try {
  45. $scheme = $pdoCon->query("SHOW CREATE TABLE `" . $table[0] . "`");
  46.  
  47. if ($scheme != false) {
  48. $scheme = $scheme->fetch();
  49.  
  50. $create = $scheme[1];
  51. $create = preg_replace('/AUTO_INCREMENT=([0-9]+) /i', '', $create);
  52.  
  53. $zip = new ZipArchive;
  54. $res = $zip->open($database[0] . '-mysql.zip', ZipArchive::CREATE);
  55. if ($res === TRUE) {
  56. $zip->addFromString($database[0] . '-' . $table[0] . '-scheme.sql', $create);
  57. $zip->close();
  58.  
  59. echo 'STRUCT:ZIP ';
  60. }
  61.  
  62. $zip = new ZipArchive;
  63. $res = $zip->open($database[0] . '-mysql.zip', ZipArchive::CREATE);
  64. $locate = $zip->locateName($database[0] . '-' . $table[0] . '-data.sql');
  65. $zip->close();
  66.  
  67. if ($locate == false OR $update == true) {
  68. try {
  69. $data = $pdoCon->query("SELECT * FROM `" . $table[0] . "`");
  70.  
  71. $tmp = 'tmp-' . $database[0] . '-' . $table[0] . '-data.sql';
  72. $fd = fopen($tmp, "w+");
  73. while($insert = $data->fetch(PDO::FETCH_ASSOC)) {
  74. fputs($fd, "INSERT INTO `" . $table[0] . "` VALUES ('" . implode("','", $insert) . "')\r\n");
  75. }
  76. echo 'DATA:TEMP ';
  77. fclose($fd);
  78.  
  79. $zip = new ZipArchive;
  80. $res = $zip->open($database[0] . '-mysql.zip', ZipArchive::CREATE);
  81. if ($res === TRUE) {
  82. $zip->addFile($tmp, $database[0] . '-' . $table[0] . '-data.sql');
  83. $zip->close();
  84. unlink($tmp);
  85. echo 'DATA:ZIP ';
  86. }
  87. }
  88. catch (Exception $e) {
  89. echo ' ** ERRORRRR';
  90. }
  91. }
  92. else {
  93. echo 'INFO: No data update needed';
  94. }
  95. }
  96. else {
  97. echo 'ERROR: table corrupt, can not access scheme';
  98. }
  99. }
  100. catch(Exception $e) {
  101. echo 'ERROR: table corrupt, can not access scheme';
  102. }
  103. }
  104. else {
  105. echo 'INFO: No scheme update needed';
  106. }
  107.  
  108. echo ']' . $enter;
  109. flush();
  110. }
  111. }
  112. }
  113. }
  114. catch(Exception $e) {
  115. die("Error creating database connection");
  116. }
Add Comment
Please, Sign In to add comment