我有几种形式,有不同的领域和目的。
所以我想“嘿,我会建立一个通用的 insert.php 页面来输入数据到我的数据库”。
好的,到目前为止一切顺利。
但现在我需要将文件链接到每条记录,因此我的表单中有一个<input type="file">
字段
我真正想要做的是允许用户选择几个文件(图片,视频),创建一个名为table的目录加上正在插入的记录的id(upload/$tablename/$id/
),存储文件和添加数据库的路径。
类似的东西:
ID | NAME | WEBPAGE | FILES
01 | john | john.com | /upload/tblWebpages/01/
02 | mike | mike.net | /upload/tblWebpages/02/
19 | jimy | jimy.org | /upload/tblWebpages/19/
因为我不知道将插入多少文件或其名称,后来我打算获取该目录中的所有图像并显示它。
是否可以在处理上传时知道表中的记录ID? 因为,如上所述,我想将文件存储在名为 $ ID 的目录下 我应该如何将它添加到我的查询中?
好的,代码:
insert.php
include('classes/class.upload.php');
$server = "localhost";
$user = "root";
$password = "xxxxx";
$database = "myDB";
$tabela = $_POST['tabela'];
$diretorio = "upload/".$tabela."/";
mysql_connect($server,$user,$password);
mysql_select_db($database) or die("Unable to select database" . mysql_error());
// create an array to hold your filnames
$images = array();
$files = array();
foreach ($_FILES['imagem'] as $k => $l) {
foreach ($l as $i => $v) {
if (!array_key_exists($i, $files))
$files[$i] = array();
$files[$i][$k] = $v;
}
}
foreach ($files as $file) {
$handle = new Upload($file);
if ($handle->uploaded) {
$handle->Process($diretorio);
if ($handle->processed) {
echo 'OK ';
// add the filename to the array
$images[] = $handle->file_dst_pathname;
}
else { echo 'Upload error: ' . $handle->error; }
}
else { echo 'Upload error: ' . $handle->error; }
unset($handle);
}
foreach ($_POST as $field => $value) {
if (!preg_match("/$value/i", $tabela)) {
if (preg_match("/$field/i", 'data')) {$value = date('Y-m-d', strtotime($value));}
else {$value = mysql_real_escape_string($value);}
$campo .= $field . ',';
$valor .= '\'' . $value . '\'' . ',';
$query = "INSERT INTO $tabela ($campo) VALUES ($valor)";
$query = str_replace(",)",")",$query);
//echo " inside foreach RESULT = $result and QUERY = $query <br>";
}
}
$result = mysql_query($query);
echo " outside foreach RESULT = $result and QUERY = $query <br>";
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
mysql_close();
form.php (简化)
<form method="POST" action="insert.php" class="classeform" enctype="multipart/form-data">
<label for="namee" class="lbl-d-input">Name: </label>
<input type="text" name="namee" id="namee" class="field">
<label for="webpage" class="lbl-d-input">Webpage: </label>
<input type="text" name="webpage" id="webpage" class="field">
<label for="files" class="lbl-d-input">Files: </label>
<input type="file" name="files[]" id="files" class="field-img">
<input type="hidden" name="tabela" value="mytbl">
<input type="submit" value="Enviar" class="btn-enviar">
</form>
答案 0 :(得分:1)
使用mysql_insert_id()
答案 1 :(得分:0)
你看到你的回音值吗?
我首先要编写一些调试代码
例如: 在这行代码之后
if (!preg_match("/$value/i", $tabela)) {
我会把
print("Value Matched");
这样你知道你进入你的for循环。另外我注意到你没有在循环内附加你的$ query变量,所以db条目永远不会被添加?