0

PHPとMySQLを使用してクエリを実行しています。同じクエリを持つ2つのスクリプトを作成しましたが、1つはブラウザにクエリ結果を表示するためのもので、もう1つはクエリ結果をファイルとしてダウンロードするためのものです。同じクエリですが、ダウンロード中に異なる結果が得られますが、これは正しくありません。たとえば私のクエリは

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

$stermZINCFINGERPROTEINの場合、mysqlコマンドラインと表示の両方で685レコードを提供します。しかし、ファイルをダウンロードすると、レコードを追加することで約800レコードが得られますwhere gene_name like '%ZINC FINGER%'

誰かがそれを引き起こしている可能性がある、何か考えを持っていますか?前もって感謝します。コニカ

これがファイルをダウンロードするためのコードです

<?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);
?>
4

1 に答える 1

1

私はそれを修正したと思います。最初にファイルのダウンロード部分を削除し、画面にクエリを印刷しました。変数が「Zinc finger protein」から「zinc」に切り捨てられていることがわかりました。私が推測する投稿方法の何か。次に、 value= '$sterm' のような post メソッドでそれを渡しながら、$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>";

私が考えるのはなんて愚かなことでしょう-1つのクエリが異なる結果を出している:(あなたの提案をありがとう!

于 2013-02-13T10:58:31.893 に答える