2014-04-24 55 views
-1

我有一个网站,允许用户上传一个csv文件,然后将其加载到postgres数据库中。上传文件是好的,我捕获的文件名和位置../Data/Uploads/mycsv.csv$_POST['fname']在php文件中使用php变量()

我想在$file=file($_POST['fname'])中使用这个变量,但不能让它工作,但是如果我把它编码为$file=file("../DATA/Uploads/mycsv.csv")它可以工作。我附上了有问题的代码。在此先感谢您的帮助

也为了澄清echo $_POST['fname'];返回../DATA/Uploads/mycsv.csv,它与硬编码值相同。

请忍受我作为即时消息只对这个比较新。我附加了2个html表单。最顶层的传递$ fname变量,该变量包含用于上传文件的php代码的文件名和路径。

<Form Method="post" Action="../PHP/Loadcsv.php"> 
<input type="text" value="<?php echo htmlspecialchars($fname);?>" name="fname"> 
<br /> 
<Input Type="submit" Value="Continue"> 
</Form> 

这是PHP复制CSV导入数据库

<?PHP 
if ($_POST['submit']) { 

$file = file(printf($_POST['fname'])); //****doesnt work****** 
//$file = file("../DATA/Uploads/csv_trial1.csv"); //********This works****** 

$db = pg_connect("host=localhost dbname=blah user=me password=you"); 
pg_exec($db, "COPY personaldetails FROM stdin"); 

foreach ($file as $line) { 
$tmp = explode(",", $line); 
pg_put_line($db, sprintf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", $tmp[0], $tmp[1],  $tmp[2], $tmp[3], $tmp[4], $tmp[5], $tmp[6], $tmp[7])); 
} 

pg_put_line($db, "\\.\n"); 

pg_end_copy($db); 

?> 
下面

是运行上述PHP的HTML。

<form id='form' method='post' action='' > 

<input type="submit" name="submit" /> 

</form> 

运行一大堆回声找到后对变量的影响深远,我不认为这是可能达到的if语句内部由于下次使用后的?

**更新**

所以过了一小打和弹跳的想法几乎是逐字从我的办公室的墙上....我是在正确的轨道上,并德文是正确的也是如此,我的问题是2 post请求的答案是有一个PHP变量$filename = $_POST['fname'];从第一种形式把变量,并把这个到输入的第二种形式

<form id='form' method='post' action='' > 
<input type="hidden" value="<?php echo htmlspecialchars($filename);?>" name="fname"> 
<input type="submit" name="submit" /> 

我相信可能还有其他的方式来实现这一点,但在它的工作时刻。

+0

你也可以请张贴你的表单HTML吗? – Scopey

+1

你不需要printf()。 – Devon

回答

1

我不知道你在哪里使用printf()函数来了,但任何打印或echo命令将输出的参数给浏览器,并不会在其手返回功能。你不需要使用任何特殊的东西来使用变量作为参数。只是:file($_POST['fname']);

printf的具体输出格式的字符串,并返回字符串的长度。因此,这是调用file(integer)其中整数是$_POST['fname']的值的长度的等价物。