0

我不知道为什么我会收到这个错误。

这是我的代码的样子:

<?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); 
              } ?>
4

2 回答 2

0

更改为它可能会起作用:

$result = mysql_query('SELECT * FROM `$table`'); 
于 2013-11-02T16:42:13.187 回答
0

首先,您在一行中的所有代码都很难帮助您进行调试。其次$result,在将其传递给您之前进行检查,mysql_num_fields因为查询失败,您会发现它是错误的。

在此处查看有关以更好方式解释的类似问题的更多信息

于 2013-11-01T10:17:41.873 回答