很久以前,我读过this question。然后,我尝试了这段代码:
$code = $_GET['code'];
$str_1 = mysql_query("SELECT * FROM `MyTable`");
while ($str_2 = mysql_fetch_array($str_1)) {
header("content-type: application/octet-stream");
header("content-disposition: inline; filename= " . $str_2['my_id'] . "");
echo base64_decode($str_2['my_str']);
}
我的数据库中有一些数据:
+--------+-----------------+
| my_id | my_str |
+--------+-----------------+
| id_1 | base64_str_1 |
| id_2 | base64_str_2 |
| id_3 | base64_str_3 |
| id_4 | base64_str_4 |
+--------+-----------------+
当我使用浏览器浏览我的PHP代码时,例如:http://localhost/my_php.php?code=id_3
。它总是返回一个满足的文件(名称为id_3
)(它的内容为:base64_str_1
)。
你能告诉我:“这个PHP代码有什么问题,使用SQL查询?”。
答案 0 :(得分:0)
使用此代码,您将从查询中获取最后一行ID的名称。正因为你更换了标题:
header("content-disposition: inline; filename= " . $str_2['my_id'] . "");
正在使用来自所有str行的串联生成内容。因此,生成的内容是:
base64_str_1base64_str_2base64_str_3base64_str_4
而不仅仅是base64_str_1
如果您需要从MyTable的一行生成一个唯一文件,您可以使用:
$code = $_GET['code'];
$str_1 = mysql_query("SELECT * FROM `MyTable` where my_id = '$code'");
header("content-type: application/octet-stream");
header("content-disposition: inline; filename= " . mysql_result($str_1, 0, 'my_id') );
echo base64_decode(mysql_result($str_1, 0, 'my_str'));