需要帮助从PHP获取mysql表中的id

时间:2011-11-22 12:34:58

标签: php mysql database

我有几种形式,有不同的领域和目的。

所以我想“嘿,我会建立一个通用的 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>

2 个答案:

答案 0 :(得分:1)

使用mysql_insert_id()

答案 1 :(得分:0)

你看到你的回音值吗?

我首先要编写一些调试代码

例如: 在这行代码之后

if (!preg_match("/$value/i", $tabela)) {

我会把

print("Value Matched");

这样你知道你进入你的for循环。另外我注意到你没有在循环内附加你的$ query变量,所以db条目永远不会被添加?