PHP警告:mysql_fetch_row()期望参数1是资源,布尔值在

时间:2013-11-01 10:06:54

标签: php insert warnings

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

以下是我的代码:

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

2 个答案:

答案 0 :(得分:0)

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

检查here以获取有关以更好方式解释的类似问题的更多信息

答案 1 :(得分:0)

更改为此可能有效:

$result = mysql_query('SELECT * FROM `$table`');