2013-10-09 132 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