我使用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%'
有没有人有任何想法,可能导致它的原因。 提前致谢。 柯尼卡
以下是下载文件的代码
<?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 :(得分: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>";
我多么愚蠢地思考 - 一个查询给出了不同的结果:( 谢谢你的建议!