在php文件中使用php变量()

时间:2014-04-24 05:21:12

标签: php postgresql csv

我有一个网站,允许人们上传csv文件,然后将其加载到postgres数据库中。上传文件很好,我将文件名和位置../Data/Uploads/mycsv.csv捕获为$_POST['fname']

我正在尝试在$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>

这是将csv复制到数据库中的php

<?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>

在运行了大量的echo以找到变量到达的位置之后,我认为它不会到达if语句的内部可能是由于下一次使用post?

** **更新

所以经过一点点玩耍和弹跳的想法几乎完全脱离我的办公室墙壁......我在正确的轨道上,Devon也是对的,我的问题是2个帖子请求答案是有一个php变量{{ 1}}从第一个表单中获取变量并将其放入第二个表单的输入中

$filename = $_POST['fname'];

我确信可能有其他方法可以实现这一目标,但目前它的确有效。

1 个答案:

答案 0 :(得分:1)

我不确定你在哪里提出printf(),但是任何print或echo命令都会将参数输出到浏览器并且不会将其返回给手头的函数。您不需要使用任何特殊的东西来使用变量作为参数。只是:file($_POST['fname']);

Printf专门输出格式化字符串并返回字符串的长度。所以这相当于调用file(integer),其中整数是$_POST['fname']的值的长度。