如果我下载它,mysql给出不同的结果

时间:2013-02-12 10:20:57

标签: php mysql file download

我使用PHP和MySQL来运行查询,我编写了两个具有相同查询的脚本,但是一个用于在浏览器上显示查询结果,另一个用于将查询结果下载为文件。即使它是相同的查询,它在下载时给出不同的结果,这是不正确的。 我的查询例如是

$query="select * from tf where gene_symbol like '%$sterm%' || gene_name like '%$sterm%' || synonym like '%$sterm%'";

如果$sterm ZINC FINGER PROTEIN ,它会在mysql命令行和显示屏上显示685条记录。但是如果我下载文件,它甚至会添加记录where gene_name like '%ZINC FINGER%'

,从而提供大约800条记录

有没有人有任何想法,可能导致它的原因。 提前致谢。 柯尼卡

以下是下载文件的代码

<?php

$sterm = $_POST["sterm"];
$sterm = strtoupper($sterm);
$query = "select * from tf where gene_symbol like '%$sterm%' || gene_name like '%$sterm%' || synonym like '%$sterm%'";
$result = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result) > 0) {
    result_disp($result);
}

function result_disp($results)
{
    $num_fields = mysql_num_fields($results);
    $headers    = array();
    for ($i = 0; $i < $num_fields; $i++) {
        $headers[] = mysql_field_name($results, $i);
    }
    $fp = fopen('php://output', 'w');

    if ($fp && $results) {
        header('Content-Type: text/csv');
        header('Content-Disposition: attachment; filename="export.txt"');
        header('Pragma: no-cache');
        header('Expires: 0');
        fputcsv($fp, $headers, chr(9));
        while ($rows = mysql_fetch_row($results)) {
            fputcsv($fp, array_values($rows), chr(9));
        }
        die;
    }
}
fclose($fp);
?>

1 个答案:

答案 0 :(得分:1)

我想我修好了, 首先删除文件下载部分,然后在屏幕上打印查询。 我看到变量从'锌指蛋白'截断到'锌'。我想在post方法中有些东西。然后我在$ sterm上使用单引号,同时在post方法中传递它 喜欢 value ='$ sterm'并且它有效。这是我用来传递变量的脚本:

echo "<table width='100%'><tr><td><strong>Click on column headers to sort; * dbTF = DNA binding Transcription Factor</strong></td> <td> 
<form action='search/download-search' method='post' >
<input type='hidden' name='sterm' value= '$sterm' >
<input type='submit' value='Download now'>
</form>
</td> </tr>
</table>";

我多么愚蠢地思考 - 一个查询给出了不同的结果:( 谢谢你的建议!