PHP传值问题.第二页得到了值,但在生成文件的时候又失去了该值.

1脚本功能,从a.php传一个名字给sql2csv.php.sql2csv.php得到该值,把这个值所为数据库表名,然后使用SQL语句,将该表内容输出为一个XLS文件.2... 1 脚本功能,从a.php传一个名字给sql2csv.php. sql2csv.php得到该值,把这个值所为数据库表名,然后使用SQL语句,将该表内容输出为一个XLS文件.
2 奇怪的是.sql2csv可以得到该值.但是到了生成SQL语句那里该值消失.

脚本如下.
a.php
<form action="sql2csv.php" method="post">
<input name="pname" value="请输入要下载的表名"/>
<input type="submit" value="提交"/>
</form>

sql2csv.php脚本如下.

<?php
function get_type($var)
{
if(is_object($var))
return get_class($var);
if(is_null($var))
return 'null';
if(is_string($var))
return 'string';
if(is_array($var))
return 'array';
if(is_int($var))
return 'integer';
if(is_bool($var))
return 'boolean';
if(is_float($var))
return 'float';
if(is_resource($var))
return 'resource';
//throw new NotImplementedException();
return 'unknown';
}

global $sql;
global $DB_TBLName;
$DB_TBLName = $_POST['pname'];
//$DB_TBLName = strval($DB_TBLName);
//echo $DB_TBLName;
//exit;
$DB_Server = "localhost";
$DB_Username = "root";
$DB_Password = "c3110pt";
$DB_DBName = "cellopt";
//$DB_TBLName='badcell';
//echo var_dump($DB_TBLName);
//exit;

$savename = date("YmjHis");
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect.");
mysql_query("Set Names 'gbK'");
$file_type = "vnd.ms-excel";
$file_ending = "xls";
header("Pragma: no-cache");
$now_date = date("Y-m-j H:i:s");
//$title = "数据库名:$DB_DBName,数据表:$DB_TBLName,备份日期:$now_date";

$sql = "Select * from $DB_TBLName";
echo var_dump($sql);
//exit;

//header("Content-Type: application/$file_type;charset=gbk");
//header("Content-Disposition: attachment; filename=".basename($_GET['url']));

//header("Content-Disposition: attachment; filename=".$savename.".$file_ending");
$filename =$_POST['pname'].'.xls'; //文件路径
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($filename));
$ALT_Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database");
$result = @mysql_query($sql,$Connect) or die(mysql_error());
//echo("$title\n");
$sep = "\t";
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");
$i = 0;
while($row = mysql_fetch_row($result)) {
$schema_insert = "";
for($j=0; $j<mysql_num_fields($result);$j++) {
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert .= "\t";
print(trim($schema_insert));
print "\n";
$i++;
}
return (true);
?>
展开
 我来答
Acethank
2012-09-05
知道答主
回答量:22
采纳率:0%
帮助的人:10.8万
展开全部
mysql_query("Set Names 'gbK'");

mysql_query 这是一个SQL查询指令不是设置编码方式。

echo var_dump($sql);

为何 echo已经打印了($sql);
还要多加一个 var_dump打印 明显的错误
jiangxibaiyi
2012-09-05 · 跟随风去旅行-伤心的歌
jiangxibaiyi
采纳数:3973 获赞数:14412

向TA提问 私信TA
展开全部
这么多代码?
眼花。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loufz123654
2012-09-05 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:92
采纳率:0%
帮助的人:74.8万
展开全部
你确定不是sql语句错误?
你带入的值是什么,$sql打印出来的是什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天庭魂魄
2012-09-05
知道答主
回答量:16
采纳率:0%
帮助的人:20.2万
展开全部
定义字符串有问题吧!仔细检查代码吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式