上载的文件在数据库中显示为Array,而userid未保存

时间:2013-07-20 09:18:42

标签: php mysql forms

想知道你是否可以提供帮助?

我目前正在开发一个允许管理员将文件上传到服务器的脚本。当文件上传时,它从表单中获取信息并将其存储在数据库中,以后允许有权下载它的用户。

我已成功制作表格:

Select File To Upload
<div style="width:100%; margin:5px;">
<form action="uploadclientfile.php" method="post" enctype="multipart/form-data" name="upload" style="margin:5px;">
<label> File</label><br /><br />
<input name="uploaded_file" type="file" class="input-xlarge" required/>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" /><br /><br />
<label>Select Users Who Can Download The File</label><br /><br />
<select name="users[]" multiple="multiple" style="width:300px">
<?php
$useruploadids = mysql_query("SELECT member_id, firstname, lastname FROM members");
while ($row = mysql_fetch_assoc($useruploadids)) {
    $user_id = $row['userid']; 
    $firstname = $row['firstname'];
    $lastname = $row['lastname'];
?>
<option value=""<?php echo $user_id ?>"><?php echo $firstname ?><?php echo $lastname     ?></option>
<?php } ?>
<input name="Upload" type="submit" value="Upload" class="btn" />
</form>

因此,这将创建一个多选框,其中包含数据库中的所有用户,如果需要,可以选择多个用户。它将其userid名字和姓氏称为。但它没有显示用户ID。哪个没问题。

下一个文件是上传文件,我遇到的问题是在数据库中。它不会记录所选的用户ID,文件名总是以数组形式出现。虽然它确实正确保存了文件位置。

知道出了什么问题吗?

<?php 

 $target = "clientfiles/"; 
 $target = $target . basename( $_FILES['uploaded_file']['name']); 

 $userid=$_POST['users[]'];  
 $file=($_FILES['uploaded_file']); 

 mysql_connect("localhost", "username", "password") or die(mysql_error()) ; 
 mysql_select_db("database") or die(mysql_error()) ; 



 mysql_query("INSERT INTO `cfiles` VALUES ('$userid', '$file', '$target')") ; 


 if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $target)) 
 {
 echo "The file ". basename( $_FILES['uploadedfile']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else {  
 echo "Sorry, there was a problem uploading your file."; 
 } 
 ?> 

任何线索?

感谢您阅读

1 个答案:

答案 0 :(得分:0)

鉴于您允许用户选择格式为userids的多个[],以下$userid=$_POST['users[]'];将是一个数组。给定$userid是一个数组,当您将其存储为字符串时,将存储值Array()而不是实际的user_id值。如果数据库表字段user_id的类型为INT,则字符串值Array()甚至无法存储,将导致0.

如果你的目标是存储多个值,转换成多个记录,你应该遍历$user_id数组并按如下方式存储它们

foreach ($userid as $id) {
    mysql_query("INSERT INTO `cfiles` VALUES ('$id', '$file', '$target')")
}