2013-11-01 66 views
1

给出我不知道为什么我收到此错误。PHP警告:mysql_fetch_row()期望参数1是资源,布尔在

这里是我的代码如下所示:

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

换行符,请......此外,什么是'输出mysql_error()'? – Sirko

+2

mysql_已弃用使用mysqli_或PDO – Sudheer

回答

0

首先,你在一行中的所有代码使得它非常难以帮你调试。 然后在将它传递到mysql_num_fields之前检查$result,您会发现它的错误,因为查询失败。对类似问题的详细信息

检查here多数民众赞成在一个更好的方法来解释

0

更改到这一点,可能工作:

$result = mysql_query('SELECT * FROM `$table`'); 
相关问题