Я пытаюсь сделать резервную копию моей базы данных MySQL, используя файл PHP, чтобы сохранить .gz
файл на мой сервер. Это выглядит очень хорошо, за исключением того, что файл не содержит никаких данных ..
Все созданные файлы выглядят правильно, кроме этой важной вещи!
Например. вот пример строки, созданной кодом
INSERT INTO ticket_sold VALUES("","","","","","","","","","","");
Это делает это для всех таблиц.
Я основал код на этом уроке, поэтому он должен работать: https://davidwalsh.name/backup-mysql-database-php
Вот мой код:
function backup_database_tables($host,$user,$pass,$name,$tables)
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
//cycle through each table and format the data
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = preg_replace("n","\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
Я думаю, что это связано с этой областью кода, но это немного за мной:
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = preg_replace("n","\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
Как я уже сказал, все остальное работает отлично, и я очень взволнован всем этим, но мне просто нужно, чтобы этот последний кусочек работал.
Да, я знаю, что должен использовать PDO, я сделаю это, как только узнаю, что это сработает.
В конце я пошел с заявлением EXEC, когда мой друг показал мне, как настроить привилегии в phpmysql.
Спасибо за ваше время.
Других решений пока нет …