0

I am trying to do a Backup of a Table in the Database with php and codeigniter. But i have a Problem with the encoding of the data in there. After I reload the backup, I get errors because the serialized Array in the table gets corrupted somehow.

There is a difference between the SQL Backup I do over MySQL directly and PHP:

MySQL:

    s:17:"register_template";s:1:"5";s:19:"invitation_template";s:1:"9";s:16:"tombola_template";s:2:"10";s:17:"reminder_template";i:1;s:20:"max_tickets_to_order";b:0;s:11:"tombola_max";s:0:"";s:18:"external_ticketing";s:0:"";s:10:"max_guests";s:1:"0";s:21:"event_soldout_message";s:0:"";s:18:"guest_list_comment";s:0:"";s:17:"ticketing_comment";s:0:"";s:13:"reminder_body";s:0:"";}', 1321470000, 1321466400, 1321477200, '3810ddef8eaca55b2d6b8cdb28a45e0e.jpg,44e33602cb1d615c9d1ad43f25bb5058.jpg', 1, 0, 1, 'Essen Sie bei uns im Kaufleuten Restaurant zu Abend. Hier können Sie ONLINE reservieren.', ' ', ' ', 'ca.  ', '<a href="http://www.kaufleuten.com/tickets" target="_blank">Kaufleuten</a> und <a href="http://www.allblues.ch" target="_blank">All Blues Konzert AG</a>', 'http://www.kaufleuten.ch/tickets/id/verlosung-anoushka-shankar/', '', '', NULL, 1321383600, 0, 1966, 0, 0, 'Kaufleuten|info@kaufleuten.ch', 0, 0, NULL, NULL, NULL),
(2203, 0, 0, 1312408800, 0, 0, 0, 1310475960, 1309816740, 0, 'Verlosung: Steff la Cheffe', 'Gewinnen Sie Tickets!', '<a href=http://www.kaufleuten.ch/summersounds/ target="_blank">Summer Sounds 2011</a> - Unter unseren teilnehmenden Newsletter-Empfängern verlosen wir 5 x 2 Gratis-Tickets für das Konzert von Steff la Cheffe, versuchen Sie Ihr Glück! Hier die 12 Hauptacts unserer Sommerkonzertreihe im Kaufleuten:\r<br/> \r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2025&sid=" target="_blank">4.8. Steff la Cheffe</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2026&sid=" target="_blank">5.8. Anna Kaenzig & Gus McGregor feat. Jaël (Lunik)</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2074&sid=" target="_blank">8.8. Stiller Has</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2027&sid=" target="_blank">10.8. Monotales & Dead Bunny</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2028&sid=" target="_blank">11.8. King Pepe</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2030&sid=" target="_blank">16.8. Navel & Fai Baba</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2029&sid=" target="_blank">17.8. Annakin</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2031&sid=" target="_blank">19.8. Reverend Beatman Blues Trash Trio</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2032&sid=" target="_blank">20.8. Traktorkestar</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2033&sid=" target="_blank">23.8. Sein</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2034&sid=" target="_blank">30.8. Pamela Méndez & Huck Finn</a>\r<br/><a href="http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2035&sid=" target="_blank">31.8. 7 Dollar Taxi</a>\r<br/>________________________________________\r<br/>\r<br/><a href="http://www.stefflacheffe.ch" target="_blank"> STEFF LA CHEFFE</a>\r<br/>\r<br/>Rap und Ironie: Geht das? Und wie! Die Bernerin Steff la Cheffe kümmert sich nicht um Konventionen und Stilbegrenzungen, erlaubt ist, was Spass macht. Ob Rap, kabarettistische Sprecheinlagen, Beatboxing, das lockere und ebenso lustvolle wie ironische Spiel mit allen möglichen Rollen und Klängen macht «Bittersüessi Pille» zur neuen Lieblings-Droge. \r<br/>\r<br/><a href="http://www.youtube.com/watch?v=36oMNe8nPGs" target="_blank">Aktuelles Video anschauen »</a>\r<br/><a href="http://www.cede.ch/de/music-cd/partner.cfm?pid=377&aobj=829110" target="_blank">Aktuelle CD hören oder kaufen »</a>\r<br/>', '11,3,9', 'a:10:{s:19:"cancel_tickets_days";i:7;s:20:"trigger_email_amount";s:1:"5";s:21:"trigger_email_address";s:18:"info@kaufleuten.ch";s:16:"ticket_box_title";s:7:"Hinweis";s:15:"ticket_box_body";s:180:"Wir haben unsere Restaurants jeweils vor und nach der Veranstaltung für Sie geöffnet. Reservieren Sie sich Ihren Tisch in den Kaufleuten Restaurants unter der Tel. 044 225 33 33.";s:24:"reservation_payment_info";s:373:"Die Eintritte können an der Abendkasse nur in bar bezahlt werden. Dürfen wir Sie daher bitten, den entsprechenden Geldbetrag bereit zu halten. Falls Sie mehrere Tickets reserviert haben, kommen Sie gemeinsam (Teilzahlungen sind nicht möglich).\n\nIhre Reservation ist verbindlich. Bei Nichterscheinen wird Ihnen der entsprechende Betrag nachträglich in Rechnung gestellt.";s:17:"register_template";i:5;s:19:"invitation_template";i:9;s:16:"tombola_template";i:10;s:17:"reminder_template";i:1;}', 1312486200, 1312484400, 1312491600, 'b7aa8c3c6fc3f665fd4bd14077200320.jpg,0ff04904b9904f0cf9853eb923900e44.jpg', 1, 0, 1, 'Essen Sie bei uns im Kaufleuten Restaurant zu Abend. Hier können Sie ONLINE reservieren.', ' ', ' ', 'ca.  ', '<a href="http://www.kaufleuten.ch/tickets" target="_blank">Kaufleuten Kultur</a>,

PHP:

;s:24:\"reservation_payment_info\";s:373:\"Die Eintritte können an der Abendkasse nur in bar bezahlt werden. Dürfen wir Sie daher bitten, den entsprechenden Geldbetrag bereit zu halten. Falls Sie mehrere Tickets reserviert haben, kommen Sie gemeinsam (Teilzahlungen sind nicht möglich).\n\nIhre Reservation ist verbindlich. Bei Nichterscheinen wird Ihnen der entsprechende Betrag nachträglich in Rechnung gestellt.\";s:17:\"register_template\";s:1:\"5\";s:19:\"invitation_template\";s:1:\"9\";s:16:\"tombola_template\";s:2:\"10\";s:17:\"reminder_template\";i:1;s:20:\"max_tickets_to_order\";b:0;s:11:\"tombola_max\";s:0:\"\";s:18:\"external_ticketing\";s:0:\"\";s:10:\"max_guests\";s:1:\"0\";s:21:\"event_soldout_message\";s:0:\"\";s:18:\"guest_list_comment\";s:0:\"\";s:17:\"ticketing_comment\";s:0:\"\";s:13:\"reminder_body\";s:0:\"\";}', 1321470000, 1321466400, 1321477200, '3810ddef8eaca55b2d6b8cdb28a45e0e.jpg,44e33602cb1d615c9d1ad43f25bb5058.jpg', 1, 0, 1, 'Essen Sie bei uns im Kaufleuten Restaurant zu Abend. Hier können Sie ONLINE reservieren.', ' ', ' ', 'ca.  ', '<a href=\"http://www.kaufleuten.com/tickets\" target=\"_blank\">Kaufleuten</a> und <a href=\"http://www.allblues.ch\" target=\"_blank\">All Blues Konzert AG</a>', 'http://www.kaufleuten.ch/tickets/id/verlosung-anoushka-shankar/', '', '', NULL, 1321383600, 0, 1966, 0, 0, 'Kaufleuten|info@kaufleuten.ch', 0, 0, NULL, NULL, NULL);
INSERT INTO user_kaufleuten_events (`uid`, `pid`, `tstamp`, `crdate`, `cruser_id`, `deleted`, `hidden`, `starttime`, `endtime`, `fe_group`, `title`, `subtitle`, `body`, `tags`, `settings`, `eventtime`, `doortime`, `eventendtime`, `media`, `category`, `reminder`, `tombola`, `infobox`, `doortime_extra`, `eventtime_extra`, `eventendtime_extra`, `organizer`, `event_url`, `ticketcategories`, `externalmedia`, `externalmedia_literatur`, `remindertime`, `ts_closed`, `netvertising_id`, `location`, `preview`, `sender`, `literatur`, `reihe`, `gallery`, `flyer`, `pdf`) VALUES (2203, 0, 0, 1312408800, 0, 0, 0, 1310475960, 1309816740, 0, 'Verlosung: Steff la Cheffe', 'Gewinnen Sie Tickets!', '<a href=http://www.kaufleuten.ch/summersounds/ target=\"_blank\">Summer Sounds 2011</a> - Unter unseren teilnehmenden Newsletter-Empfängern verlosen wir 5 x 2 Gratis-Tickets für das Konzert von Steff la Cheffe, versuchen Sie Ihr Glück! Hier die 12 Hauptacts unserer Sommerkonzertreihe im Kaufleuten:\r<br/> \r<br/><a href=\"http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2025&sid=\" target=\"_blank\">4.8. Steff la Cheffe</a>\r<br/><a href=\"http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2026&sid=\" target=\"_blank\">5.8. Anna Kaenzig & Gus McGregor feat. Jaël (Lunik)</a>\r<br/><a href=\"http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2074&sid=\" target=\"_blank\">8.8. Stiller Has</a>\r<br/><a href=\"http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2027&sid=\" target=\"_blank\">10.8. Monotales & Dead Bunny</a>\r<br/><a href=\"http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2028&sid=\" target=\"_blank\">11.8. King Pepe</a>\r<br/><a href=\"http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2030&sid=\" target=\"_blank\">16.8. Navel & Fai Baba</a>\r<br/><a href=\"http://www.kaufleuten.ch/tickets/event_detail.php?eventid=2029&sid=\" target=\"_blank\">17.8. Annakin</a>

Those are just random snippeds out of the two SQL files. What i noticed is that I have backslashes before Quotemarks in the php Version of the backup.. but i dont really know how I can solve this.

The PHP function wich I made the Backup with is this:

function backup_Eventtable() {
    $this->load->dbutil();
    $prefs = array(
            'tables'      => array('user_kaufleuten_events'),  // Array of tables to backup.
            'ignore'      => array(),           // List of tables to omit from the backup
            'format'      => 'txt',             // gzip, zip, txt
            'filename'    => 'mybackup.sql',    // File name - NEEDED ONLY WITH ZIP FILES
            'add_drop'    => TRUE,              // Whether to add DROP TABLE statements to backup file
            'add_insert'  => TRUE,              // Whether to add INSERT data to backup file
            'newline'     => "\n"               // Newline character used in backup file
          );

    $backup =& $this->dbutil->backup($prefs);
    $this->load->helper('file');
    write_file('/var/www/html/kaufleuten/uploads/EventBackup/mybackup.sql', $backup); 
}

Here is the Documentation where i found the code.

MrTouch
  • 654
  • 2
  • 12
  • 28
  • I think that you have magic quotes enabled... –  Mar 12 '14 at 08:18
  • what do you mean by that? – MrTouch Mar 12 '14 at 08:19
  • Magic quotes are in PHP configuration in the server. They automatically add backslashes before quotes. Try to disable them. –  Mar 12 '14 at 08:22
  • i added this line: `php_flag magic_quotes_gpc Off` in my .htaccess file but it didn't change anything... – MrTouch Mar 12 '14 at 09:17
  • Well, it looks like you have to get rid of those backslashes. I would try to use a str_replace( ) function to replace \" by just ". –  Mar 12 '14 at 11:05
  • I tried that, but i still get and unserialize offset error after reloading the backup. – MrTouch Mar 12 '14 at 13:38
  • Here is a topic that can help: http://stackoverflow.com/questions/10152904/unserialize-function-unserialize-error-at-offset –  Mar 12 '14 at 13:40

0 Answers0