我目前有一个在数据库中创建项目的表格,然后在下一步中,该表格允许用户上传多个图像,以列出两个部分的工作,但是我需要能够将第一页的$ 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 . ") ");
        }
    }

最佳答案

我认为您最好的选择是:


创建表单以插入数据库项
获取插入项的ID,并在第二步中将其添加为隐藏元素
一旦第二张表格回来,您就可以轻松看到所需的ID。


请注意,这种方法将发送数据库ID的客户端,但这是最简单的选择。

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

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


接着

$id = $_SESSION['the_id'];


最好的方法(我认为总是如此)是在客户端使用非明智的令牌,并使用某种逻辑将其映射到正确的ID。一个简单的示例是为ID生成一个复杂的哈希,并在发送步骤2的表单时将其作为隐藏字段发送给用户。将ID和哈希存储在数据库表中。

当用户回发该帖子时,请使用哈希将其映射回普通ID,然后销毁该条目。

10-04 10:40
查看更多