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

まず、すべてのコードが 1 行にあると、デバッグが非常に難しくなります。$resultクエリが失敗したため、それを渡す前にmysql_num_fieldsもう一度確認してください。

より良い方法で説明されている同様の問題の詳細については、ここを確認してください

于 2013-11-01T10:17:41.873 に答える