我有一個網站,允許用戶上傳一個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