将id插入MYSQL表以进行多个图像上传(寄宿家庭)

时间:2014-12-11 14:44:29

标签: php mysql

我目前有一个在数据库中创建项目的表单,然后在下一步中它允许用户上传该列表的多个图像,这两个部分都是自己工作但我需要能够从中插入$ id第一页进入图像上传查询,以确定它对应的哪个列表

以下是允许用户上传多张图片的页面

<input name="name" type="text" id="name" size="40" placeholder="Homestay's Name"/>
<input name="type" type="text" id="type" size="40" placeholder="Homestay's Type"/>
<input name="category" type="text" id="category" size="40" placeholder="Homestay's Category"/>
<input class='file' multiple="multiple" type="file" class="form-control" name="userfile[]" placeholder="Please choose your image">

这是函数

 $path = pathinfo($_SERVER['PHP_SELF']);

    for ($i = 0; $i < count ($_FILES['userfile']['name']); $i++)
    {
        $tmp_file = $_FILES['userfile']['tmp_name'][$i];
        $filetype = $_FILES['userfile']['type'][$i];
        $filesize = $_FILES['userfile']['size'][$i];
        $filename = $_FILES['userfile']['name'][$i];
        $destination = $path['dirname'] . '../data/' . $filename;
        if (move_uploaded_file($tmp_file, $_SERVER['DOCUMENT_ROOT'] . $destination))
        {   


$name = $_POST['name'];
$type = $_POST['type'];
$category = $_POST['category'];

 $sql="INSERT INTO homestay (name, type,category,)
VALUES
('$name', '$type','$category')";


        $result = mysql_query ("insert into img_homestay (id, location,filetype, filename, filesize)                                                
        values ('".$id."', '" . $destination . "','" . $filetype ."','" . $filename . "'," . $filesize . ") ");
        }
    }

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题:

在上一页中,您有列表中的ID。

在第二页,将其放入隐藏字段,如:

<input type="hidde" name="theId" value="<?php echo $_POST["idFromPrevPage"]; ?>" />

然后您可以从$_POST["theId"]

访问它

修改

根据你的评论,我想,你想做这样的事情:

$sql = "INSERT INTO homestay (name, type,category) VALUES ('".mysql_real_escape_string($name) ."', "
. "'".mysql_real_escape_string($type)."','".mysql_real_escape_string($category)."')";
$res = mysql_query($sql);
$id = mysql_insert_id(); //This where you can get the last insert id.

备注

无论如何,您的原始代码中存在一些问题:

  • 在您的第一个插入查询中,字段列表中包含不需要的,字符。

  • 不要使用mysql_ *函数,不推荐使用它们。使用mysqli_ *函数或PDO!

  • 转义数据以避免sql漏洞或使​​用预准备语句。

答案 1 :(得分:0)

我认为你最好的选择是:

  • 创建表单以插入db项目
  • 获取插入项目的ID,并在第二步
  • 中将其添加为隐藏元素
  • 一旦第二个表单返回,您就可以轻松查看所需的ID。

请注意,此方法将发送DB id的客户端,但这是最简单的选项。

第二种方法是利用会话变量 - 只需将项目ID存储到用户会话中,然后在第二步中检索它。如果同一个帐户/人可以同时提交多个表格,这样更安全,但不是一个好方法。

$_SESSION['the_id'] = $result->id;

然后

$id = $_SESSION['the_id'];

最好的方法(在我看来总是如此)是在客户端使用非感知令牌,并使用某些逻辑将其映射到正确的ID。一个简单的例子是为ID生成一个复杂的散列,并在发送第2步的表单时将其作为隐藏字段发送给用户。将ID和散列存储在数据库表中。

当用户回发后,使用哈希将其映射回普通ID,并销毁该条目。