2013-02-12 52 views
0

我使用PHP和MySQL運行一個查詢,我已經寫有相同的查詢兩個劇本,而是一個有關瀏覽器顯示的查詢結果和其他下載查詢結果作爲文件。即使它是相同的查詢,它在下載時給出不同的結果,這是不正確的。 我的例如查詢mysql的給不同的結果,如果我下載它

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

如果$sterm鋅指蛋白,它給雙方在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); 
?> 
+0

是否使用完全相同的SQL查詢!在這兩個文件中?沒有額外的like子句? – Husman 2013-02-12 10:30:01

+0

請確保'$ sterm'是你期望的。 – SparKot 2013-02-12 10:32:53

+0

修改你的查詢..'$ query =「select * from tf where gene_symbol like'%」。$ sterm。「 %'|| gene_name like'「。%$ sterm%。」'|| synonym like'「。%$ sterm%。」'「;' – 2013-02-12 10:35:44

回答

1

我想我固定它的代碼, 首先刪除文件下載的部分,只是顯示在屏幕上查詢。 我看到變量從'鋅指蛋白'截斷爲'鋅'。我猜想是在post方法中。然後我用$ 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>"; 

是我的錯認爲 - 一個查詢是給不同的結果:( 感謝您的建議