0

I don't know why I recieve this error.

Here is what my code looks like:

<?php ini_set('memory_limit', '1000M'); set_time_limit(0); 
backup_tables('host','dbuser','password','dbname','dbtable');

function backup_tables($host,$user,$pass,$name,$tables = '*') 
{ 
$link = mysql_connect($host,$user,$pass); 
mysql_select_db($name,$link); 
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); 
  }
  foreach($tables as $table) { 
  $result = mysql_query('SELECT * FROM '.$table); 
  $num_fields = mysql_num_fields($result);
  $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/i", "\\n",$row[$j]);; 
            if (isset($row[$j])) { 
              $return.= '"'.$row[$j].'"' ; 
            } else { 
               $return.= '""'; 
             } 
             if ($j<($num_fields-1)) { 
             $return.= ','; 
              } 
             } 
             $return.= ");\n"; 
               } 
               } 
            $return.="\n\n\n"; 
               } 
            $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');  
            fwrite($handle,$return); fclose($handle); 
              } ?>
Joke_Sense10
  • 5,341
  • 2
  • 18
  • 22

2 Answers2

0

firstly, all your code on one line makes it awfully hard to help you debug. secondly check $result before passing it to mysql_num_fields you'll find its false because the query failed.

check here for more info on a similar problem thats explained in a better way

Community
  • 1
  • 1
gardni
  • 1,384
  • 2
  • 24
  • 51
0

Change to this it might work :

$result = mysql_query('SELECT * FROM `$table`'); 
Dustin.php
  • 11
  • 6