Cała treść metody z klasy, w której znajduje się.
file_put_contents(BASEPATH.'/Cache/dump.sql', '');
$tables = $this->db->query('SHOW TABLE STATUS')->fetchAll();
for($i=0
, $count=count($tables); $i<$count; $i++) {
$result = $this->db->query('SHOW CREATE TABLE `'.$tables[$i]['Name'].'`');
$createTableQuery = $result->fetchAll();
if(isset($createTableQuery[0]['Create Table'])) {
$tablesDefinitions = $createTableQuery[0]['Create Table'].";\n\r\n\r\n\r\n\r";
}
else
{
$table = $this->db->query('SHOW COLUMNS FROM `'.$tables[$i]['Name'].'`')->fetchAll();
$tablesDefinitions = 'CREATE TABLE IF NOT EXISTS `'.$tables[$i]['Name'].'` ('."\r\n";
$primary = '';
for($j=0
, $countj=count($table); $j<$countj; $j++) {
if(!empty($tablecontent) && strpos($tables[$i]['Name'], 'backup') === false) {
$valuesDefinitions .= '`'.$table[$j]['Field'].'`, ';
}
$tablesDefinitions .= '`'.$table[$j]['Field'].'` '.$table[$j]['Type'].' COLLATE '.$tables[$i]['Collation'].' '.($table[$j]['Null'] == 'YES' ? 'NULL' : 'NOT NULL').(($table[$j]['Default'] != '' && $table[$j]['Default'] != null) ? ' DEFAULT \''.$table[$j]['Default'].'\'' : '').($table[$j]['Extra'] == 'auto_increment' ? ' AUTO_INCREMENT' : '').",\r\n";
if($table[$j]['Key'] != '')
{
if($table[$j]['Key'] == 'PRI')
{
$primary .= ', PRIMARY KEY (`'.$table[$j]['Field'].'`)';
}
elseif($table[$j]['Key'] == 'UNI')
{
$primary .= ', UNIQUE KEY `'.$table[$j]['Field'].'` (`'.$table[$j]['Field'].'`)';
}
elseif($table[$j]['Key'] == 'MUL')
{
$primary .= ', KEY `'.$table[$j]['Field'].'` (`'.$table[$j]['Field'].'`)';
}
}
}
$tablesDefinitions = substr($tablesDefinitions, 0
, strlen($tablesDefinitions)-3
);
$tablesDefinitions .= $primary."\r\n".') ENGINE='.$tables[$i]['Engine'].' DEFAULT COLLATE='.$tables[$i]['Collation'].' '.(isset($tables[$i]['Auto_increment']) ?
'AUTO_INCREMENT='.$tables[$i]['Auto_increment'] : '').' ;'."\r\n\r\n\r\n"; }
$result->closeCursor();
file_put_contents(BASEPATH.'/Cache/dump.sql', $tablesDefinitions, FILE_APPEND);
if(strpos($tables[$i]['Name'], 'backup') === false) {
$stmt = $this->db->query('SELECT * FROM `'.$tables[$i]['Name'].'`');
$rows = 0;
$cut = 5000;
while($row = $stmt->fetch(\PDO::FETCH_ASSOC))
{
foreach($row as $key => $val)
$this->array2[] = '(\''.implode('\', \'', $row).'\')'; $rows++;
if($rows == $cut)
{
if($this->array2 !== array()) file_put_contents
(BASEPATH
.'/Cache/dump.sql', 'INSERT INTO `'.$tables[$i]['Name'].'` VALUES '."\r\n ".implode(', ', $this->array2).";\r\n\r\n\r\n", FILE_APPEND
);
$rows = 0;
}
}
if($valuesArray2 !== array()) file_put_contents
(BASEPATH
.'/Cache/dump.sql', 'INSERT INTO `'.$tables[$i]['Name'].'` VALUES '."\r\n ".implode(', ', $this->array2).";\r\n\r\n\r\n", FILE_APPEND
);
}
}