我目前有一个在数据库中创建项目的表单,然后在下一步中它允许用户上传该列表的多个图像,这两个部分都是自己工作但我需要能够从中插入$ 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 . ") ");
}
}
答案 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存储到用户会话中,然后在第二步中检索它。如果同一个帐户/人可以同时提交多个表格,这样更安全,但不是一个好方法。
$_SESSION['the_id'] = $result->id;
然后
$id = $_SESSION['the_id'];
最好的方法(在我看来总是如此)是在客户端使用非感知令牌,并使用某些逻辑将其映射到正确的ID。一个简单的例子是为ID生成一个复杂的散列,并在发送第2步的表单时将其作为隐藏字段发送给用户。将ID和散列存储在数据库表中。
当用户回发后,使用哈希将其映射回普通ID,并销毁该条目。