2013-11-01 62 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`'); 
相關問題