我有一个网站,允许用户上传一个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" />
我相信可能还有其他的方式来实现这一点,但在它的工作时刻。
你也可以请张贴你的表单HTML吗? – Scopey
你不需要printf()。 – Devon