2017-03-17 39 views
0

我想制作一个编辑文件窗体,您可以选择不同的文件上传并替换上一个文件。这是我的代码。PHP - 文件编辑窗体显示空白

<?php 
require("config.php"); 
$id = $_GET['id']; 

$sql = "SELECT * FROM contracts WHERE id= '$id'"; 
$result = $con->query($sql); 
while ($row = $result->fetch_assoc()) 
{ 
?> 

<html><head></head> 
<body> 

<form method="GET" action="" enctype="multipart/form-data"> 

    ID: <?php echo $id; ?><br> 
    <input type="hidden" name="id" value="<?php echo $id; ?>" /> 

    Upload File: 
    <input type="file" name="upload" value="<?php echo $row($_FILES['name']) ?>"/><br> 
    <input type="submit" name="submit" value="Submit"/> 
</form> 
</body> 
</html> 

<?php 
} 

if(isset($_GET['edit']) ){ 


if ($_FILES['upload']['size'] != 0){ 

$filename = $con->real_escape_string($_FILES['upload']['name']); 
$filedata= $con->real_escape_string(file_get_contents($_FILES['upload']['tmp_name'])); 
$filetype = $con->real_escape_string($_FILES['upload']['type']); 
$filesize = intval($_FILES['upload']['size']); 

$query = "UPDATE `contracts` set `filename` = '$filename',`filedata` = '$filedata', `filetype` = '$filetype',`filesize` = '$filesize' WHERE `id` = '$id' " ; 

if ($con->query($query) == TRUE) { 
echo "<br><br> New record created successfully"; 
} else { 
    echo "Error:<br>" . $con->error; 
} 

} else { 

$filename = $con->real_escape_string($_FILES['upload']['name']); 
$filetype = $con->real_escape_string($_FILES['upload']['type']); 
$filesize = intval($_FILES['upload']['size']); 

$query = "UPDATE `contracts` set `filename` = '$filename', `filetype` = '$filetype',`filesize` = '$filesize' WHERE `id` = '$id' " ; 

if ($con->query($query) == TRUE) { 
echo "<br><br> New record created successfully"; 
} else { 
echo "Error:<br>" . $con->error; 
} 

} 
$con->close(); 
} 

?> 

当我去了页面,它只显示空白。像这样edit file error

有人能告诉我我做错了什么吗?

+1

你不能上传文件用GET方法。 –

+1

**警告**:使用'mysqli'时,应该使用[参数化查询](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)将用户数据添加到您的查询中。 **不要**使用手动转义和字符串插值或串联来实现此目的,因为您将创建严重的[SQL注入漏洞](http://bobby-tables.com/)。意外地未经转义的数据是一个严重的风险。 – tadman

+0

请尽量避免像'== TRUE'这样不必要的东西混淆你的代码的习惯。许多函数被设计为返回值为真的值,以便字面比较是多余的。 – tadman

回答

0

正确编码应

Upload File: 
    <?php echo $row['filename'] ?> 
    <input type="file" name="upload"/><br> 
    <input type="submit" name="edit" value="Submit"/>