我有不同的容器,有不同的文件上传形式,但我无法弄清楚是什么错。当我上传文件时,我用于更新数据库的 $ _ POST 变量是错误的。
这是我用在循环中打印容器的方式:
echo '<div class="container-r">'.$row['name'].'<div class="im-up">
<label for="fileup"><img src="logo/upload.png" alt="Upload file"/></label>
<form action="uploadFile.php" method="post" enctype="multipart/form-data">
<input type="file" onchange="this.form.submit()" id="fileup" name="fileup"/>
<input type="hidden" name="idd" id="idd" value="'.$row['id'].'" />
</form></div><li>'.$row['evname'].'</li></div><br><br>';
我感兴趣的值是 idd 和Firefox的 inspect元素我可以看到所有形式的 idd 值都是正确的(在我的情况下,我有一个值为 10 的表单和一个值为 11 的第二个表单。
问题是,即使我使用 idd 11 的表单,也会直接在第二个php文件中获取 idd 变量来自 $ _ POST 数组 10 。
在 uploadFile.php 中我首先有这两行:
$id = $_POST['idd'];
var_dump($id);
和 $ id 总是 10 ,即使我来自价值 11 的表单。那么,我做错了什么?我该怎么检查?请注意,它是一个学习php的简单项目,它并不假装是一个高级项目。
编辑:这是完整的 uploadFile.php
<?php
// Start the session
session_start();
require 'connection.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Register</title>
<link href="css/register.css" rel="stylesheet" type="text/css">
</head>
<body>
<table align="center" cellspacing="0" cellpadding="0">
<tr valign="middle" align="center">
<td class="menu" background="graphics/button.png" width="120" height="30">
<a class="mm" href="home.php"><div>Home</div></a>
</td>
<td class="menu" background="graphics/button.png" width="120" height="30">
<a class="mm" href="account.php"><div>Account</div></a>
</td>
<?php
if(isset($_SESSION['loggedin'])){
echo '<td class="menu" background="graphics/button3.png" width="120" height="30"><a class="mm" href="logout.php"><div>Logout</div></a></td>';
}
else
echo '<td class="menu" background="graphics/button.png" width="120" height="30"><a class="mm" href="login.php"><div>Login</div></a></td><td class="menu" background="graphics/button3.png" width="120" height="30"><a class="mm" href="register.php"><div>Registrati</div></a></td>'?>
</tr>
</table>
<?php
$id = $_POST['idd'];
var_dump($id);
$uploaddir = 'progr/';
$file2 = $uploaddir . basename($_FILES["fileup"]["name"]). date("h i");
if (move_uploaded_file($_FILES["fileup"]["tmp_name"], $file2)) {
$stmt = $conn->prepare("UPDATE presentation SET pres_path=? WHERE user_id LIKE ? AND id LIKE ?");
$stmt -> bind_param('sii',$file2,$_SESSION['idLog'],$id);
if($stmt->execute())
echo "<br><h4>The file ". basename( $_FILES["fileup"]["name"]). " was uploaded</h4>".$id;
else
echo mysqli_error($conn);
} else {
echo "<br><h3>Uploading error</h3>";
}
?>
</body>
</html>
答案 0 :(得分:0)
通过隐藏输入,您可以调用 $ row [&#39; id&#39;] ,并使用帖子发送此值
input type="hidden" name="idd" id="idd" value=**"'.$row['id'].'**"
您可以查看从哪里获得.$row['id'].
将此添加到您的页面,以查看您发送的内容。
<?php
echo '<pre> POST raport ';
print_r($_POST);
echo '</pre>';
?>