将函数应用于MySQL导出到.txt

时间:2011-12-20 19:50:28

标签: php

我从MySQL导出一些数据,可以通过页面上的复选框选择.txt文件。

现在我有一个函数来“清除”来自MySQL的数字的中间数字,这个函数正在我的页面上工作,它看起来像这样:

<?php
$sql="SELECT * FROM table";
$result=mysql_query($sql);

// Count table rows
$count=mysql_num_rows($result);

?>

<?php function blankit($word) {
    return substr($word, 0,2). str_repeat("X",strlen($word)-4) . substr($word, strlen($word)-2,strlen($word));
} 
?>

<?php while($rows=mysql_fetch_array($result, MYSQL_ASSOC)) {
$code = ($rows['used'] == '') ? blankit($rows['code']) : $rows['code']; ?>
<tr class="first">
<td class="tc"><font face="Arial, Helvetica, sans-serif"><? echo $rows['id']; ?></font></td>
<td class="tc"><font face="Arial, Helvetica, sans-serif"><? echo $code; ?></font></td>

<td><font face="Arial, Helvetica, sans-serif"><? echo $rows['date']; ?></font></td>
<td class="tc"><font face="Arial, Helvetica, sans-serif"><? echo $rows['ip']; ?></font></td>
<td class="tc"><font face="Arial, Helvetica, sans-serif"><? echo $setusedpscde; ?></font></td>
<td class="tc"><input name="checkbox[]" type="checkbox" class="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td> 


</tr>
<?php
}
?>

现在我想在导出到.txt文件时应用同样的功能(blankit),我的导出代码:

    <?php

if ($_POST['exporttxt']) {


for($i=0;$i<count($_POST['checkbox']);$i++){

$export_id = $checkbox[$i];
$text = mysql_query("SELECT code FROM table WHERE id='$export_id'");
$text2 = mysql_fetch_assoc($text);
$text3 = $text2["code"];
$filename = "export";
$filedate = date("Y-m-d");
$fileext = ".txt";
$fileall = $filename.$filedate.$fileext;

 ob_end_clean();
    header("Content-Type: application/octet-stream");
header("Content-disposition: attachment;filename=\"$fileall\"");
   header("Content-Type: application/force-download");

    header("Content-Type: application/download");
    header("Content-Description: File Transfer");
    header("Content-Length: ".strlen($output).";\n");



echo chunk_split($text3, 16, "\n");

}
}



?>

我尝试过更改

$text3 = $text2["code"];

$text3 = ($text2['used'] == '') ? blankit($text2['code']) : $text2['code'];

但是,即使使用的不是=''

,这个X都会出现每个数字的所有中间数字

我需要在这里更改什么?

1 个答案:

答案 0 :(得分:0)

问题在于,对于第一个查询,您选择了所有列,而在第二个查询中仅选择了代码列

$text = mysql_query("SELECT code FROM table WHERE id='$export_id'");

在这种情况下,$text2['used'] == ''始终为true,因为值为null。您必须添加“已使用”列

$text = mysql_query("SELECT used, code FROM table WHERE id='$export_id'");