2013-10-09 172 views
0

我無法將數據從數據庫寫入txt文件,僅從數據庫中寫入最後一條記錄。將數據從數據庫寫入txt文件

樣品工作代碼:

include '01_config.php'; 
db_connect(); 
if(empty($_POST)) 
{ 
    define('DB_HOST','localhost'); 
    define('DB_USER','root'); 
    define('DB_PASS','password'); 
    define('DB_NAME','data_base'); 
    $select_db = mysql_select_db(DB_NAME); 
    if($select_db) 
    { 
     mysql_query("SET NAMES utf8"); 
    } 
    else 
    { 
     die('***'); 
    } 

    $query = "SELECT user_id, user_email FROM users WHERE user_position = 'yes' ORDER BY user_id ASC"; 
    $result = mysql_query($query); 
    if($result===false && trim(mysql_error)) 
    { 
     echo("*** \n"); 
    } 
     while($art = mysql_fetch_assoc($result)) 
    { 
     $out[]=$art; 
    } 
    $i=0; 
    echo "|form action=\"11.php\" method=\"post\"|\n"; 
    foreach($out as $art){ 
     $art['user_email'] = htmlspecialchars($art['user_email'],ENT_QUOTES); 
     echo <<<EOT 
     <textarea name="text$i" style="width:450px; height:190px; border: 3px solid #cccccc; font-family: Tahoma, sans-serif; font-size: 12px;"> 
     BEGIN:VCARD 
     EMAIL;TYPE=INTERNET:{$art['user_email']} 
     END:VCARD 
     |/textarea||br /| 
     EOT; 
     $i++; 
    } 
    echo '|input type="submit" value="Save to file" /||/form|'; 
}else if(isset($_POST['text0']) && isset($_POST['text1']) && isset($_POST['text2']) && isset($_POST['text3'])){ 
    $file = "13.txt"; 
    $fp = fopen($file, "w"); 
    flock($fp, 2); 
    fwrite($fp, $_POST['text0']); 
    fwrite($fp, $_POST['text1']); 
    fwrite($fp, $_POST['text2']); 
    fwrite($fp, $_POST['text3']); 
    flock($fp, 3); 
    fclose($fp); 
    echo "successfully saved!<br />"; 
}else{ 
    die("Error!!!"); 
} 
db_close(); 

如何更改代碼被寫入所有的從數據庫中的記錄? 任何幫助,不勝感激。

(有改變了一些"<"">""|",對不起。)

+0

你正在寫的'$ _POST'內容的文件,我是賴特? –

+0

是的,我正在將$ _POST內容寫入txt文件。 – piottro1

回答

0

這只是爲了說明如何完成。您需要開始使用MySQLiPDO
嘗試沿着這些路線的東西,然後嘗試將它納入你的代碼:
(我測試和它的工作對我來說)

$query = " 
    SELECT user_id, user_email 
    FROM users 
    WHERE user_position = 'yes' 
    ORDER BY user_id ASC"; 

// $query = "SELECT user_email FROM users ORDER BY user_id ASC"; 

$result = mysql_query($query); 

$totalNumRows = mysql_num_rows($result); 
echo 'Total rows : ' ,$totalNumRows ,'<br>'; 

if($totalNumRows > 0) 
{ 
    $file = "13.txt"; 
    $fp = fopen($file, "w"); 
    flock($fp, 2); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     fwrite($fp, $row['user_email']); 
    // fwrite($fp, "\r\n"); // If you need line breaks 
    } 
    flock($fp ,3); 
    fclose($fp); 
} 
+0

也適用於我:),非常感謝。我會嘗試將其添加到我的代碼中,但我發現我無法使用POST方法。 – piottro1

+0

但這不是問題。對我來說最重要的是這個作品非常出色,再次感謝您的幫助,最誠摯的問候! – piottro1

0

fopen()文件刪除所有以前的內容的方式。將模式從"w"(覆蓋)更改爲"a"(追加)。參考:http://php.net/manual/en/function.fopen.php

+0

覆蓋模式對我來說很好,這不是問題。問題是如何在我的表單中按下「保存到文件」按鈕時,一次將所有記錄寫入一列數據庫。我有100個電子郵件地址的列user_email,當我嘗試將這些地址寫入txt文件時,我只存儲了一個(最後一個或第一個,根據我的數據庫查詢 - ASC或DESC)。 – piottro1