Neden benim veritabanı yedekleme script php çalışıyor değil mi?

0 Cevap php

Ben MySQL veritabanı benim sunucuya bir. Sql dosyası olarak David Walsh tarafından Veritabanı Yedekleme komut dosyası kullanıyorum (http://davidwalsh.name/backup-mysql-database-php) yedekleme için.

Bir kullanıcı adında yedekleme oluşturulur ve (sadece emin olmak için) o tüm ayrıcalıkları verdi. Sonra php dosyasını çalıştırmak için bir php dosyası ve kurulum bir cron işi içine kodu koymak.

Bu kodu:

/* backup the db OR just a table */
function backup_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
    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] = ereg_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";
    }

    //save file
    $handle = fopen('../backup/db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
}

backup_tables('localhost','alupto_backup','pass','*');

Cron işi bittiğinde, yedekleme çalışmıyor ve ben görünen hata ile bir e-posta alırsınız:


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home5/ideapale/public_html/amatorders_basic/admin/backup.php on line 18

18. satırda bu kodu:

while($row = mysql_fetch_row($result))

Ben phpMyAdmin SQL (SHOW TABLOLAR) çalıştırdığınızda, iyi çalışıyor ve bana tüm tabloların bir listesini gösterir. Php dosyası SQL çalıştırmayı denediğinde Ama nedense, ben bir hata alıyorum.

Neden benim veritabanı yedekleme komut çalışmıyor?

0 Cevap