2012-05-30 27 views
0

我正在編寫一個腳本來將MySQL查詢導出爲CSV文件。迄今爲止,除了第二個foreach()聲明中有一個無效參數!我試圖使用mysql_data_seek但這並沒有解決問題。 AFAK $row是一個數組,所以它應該工作。你能發現foreach()錯誤的來源嗎?

<?php 

$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error()); 
mysql_select_db("database", $conn); 

if(isset($_POST['submit'])) 
{ 
    $filename = 'uploads/'.strtotime("now").'.csv'; 

    $fp = fopen($filename,"w"); 

    $sql = mysql_query("SELECT * FROM master") or die(mysql_error()); 
    $row = mysql_fetch_assoc($sql); 

    $seperator = ""; 
    $comma = ""; 

    foreach($row as $name => $value) 
    { 
     $seperator .= $comma . '' .str_replace('','""',$name); 
     $comma = ","; 
    } 

    $seperator .= "\n"; 

    fputs($fp,$seperator); 


    mysql_data_seek($sql, 0); 

    while($row = mysql_fetch_assoc($sql)); 
    { 
     $seperator = ""; 
     $comma = ""; 
     foreach($row as $name => $value) 
     { 
      $seperator .= $comma . '' .str_replace('','""',$value); 
      $comma = ","; 
     } 
     $seperator .= "\n"; 
     fputs($fp,$seperator); 
    } 
    fclose($fp); 
} 


?> 
+2

我不知道';'應該有後'而($ row = mysql_fetch_assoc($ sql))'。這可能會取消循環,而不是重新定義「$ row」的值,這意味着它使用舊數組。 – Death

+1

var_dump說什麼? – xdazz

+0

';'while循環語句的末尾是問題所在。它完成了while循環的塊。 – vedarthk

回答

0

我不能明白爲什麼自己添加的第一個foreach循環,你的代碼應該是如下

<?php 

$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error()); 
mysql_select_db("database", $conn); 

if(isset($_POST['submit'])) 
{ 
    $filename = 'uploads/'.strtotime("now").'.csv'; 

    $fp = fopen($filename,"w"); 

    $sql = mysql_query("SELECT * FROM master") or die(mysql_error()); 
    while($row = mysql_fetch_assoc($sql)); 
    { 
     $seperator = ""; 
     $comma = ""; 
     foreach($row as $name => $value) 
     { 
      $seperator .= $comma . '' .str_replace('','""',$value); 
      $comma = ","; 
     } 
     $seperator .= "\n"; 
     fputs($fp,$seperator); 
    } 
    fclose($fp); 
} 


?> 
+0

第一個foreach循環用於輸出字段標題的名稱,如 $ seperator。= $逗號所示。 ''.str_replace('','「」',$ name); 第二個foreach循環用於輸出字段的值,如 $ seperator。= $逗號所示。 ''.str_replace('','「」',$ value); – jesterII