将图像上传到数据库和文件夹

时间:2013-08-28 06:04:23

标签: php mysql

我有这个问题我已经创建了一个代码,用于将文本和图像上传到数据库和文件夹中。几天前,我想知道如何创建一个唯一的ID并插入。我已经想出了一个方法但是代码不会将图像上传到数据库中只进入文件夹。

<?php
if (isset($_FILES['files'])) {
    $errors = array();
    foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
        $file_name = $key . $_FILES['files']['name'][$key];
        $file_size = $_FILES['files']['size'][$key];
        $file_tmp  = $_FILES['files']['tmp_name'][$key];
        $file_type = $_FILES['files']['type'][$key];
        if ($file_size > 2097152) {
            $errors[] = 'File size must be less than 2 MB';
        }
        $query = "
            INSERT INTO image_area2
                ('id',`name`,`path`,`unique_id`)
            VALUES
                ('','$file_name','uploads/$file_name','$_POST[un_id]');
        ";

代码似乎可以将图像插入数据库,但它不起作用,我无法弄明白。感谢您的帮助。

到目前为止我的回答让你可以更好地看到它:

  • 问题是我没有任何错误,这是最奇怪的事情。它完美地将文本插入到数据库中,将图像插入到文件夹中,但它不会将路径和名称插入到数据库中。插入的代码是好的我认为,我无法弄清楚为什么它没有这样做。我已经使用了print_r($ query)函数来查看代码是否从表单接收信息并且它正在接收它。

  • 我添加了mysql_query($ query);行和没有再次它已将文本添加到数据库和图像到文件夹但不是关于图像到数据库。 $ _FILES ['files'] ['tmp_name']我用它来定义和获取名称,tmp名称大小和类型,我把它们放入数组$ file_name,$ file_size,$ file_type和$ file_tmp

  • 我已经清除了它发布的ID一次,但奇怪的是我已经添加了1个图像,并且在db中有相同图像的2行然后如果我想添加新文本和新图像再次无法正常工作只有一个或多个图像被添加到文件夹中。

解决: 这个问题通过两个步骤得到解决,我写的那个'id'就像那样,无论如何都不需要它,第二个WAMP服务器出现了问题,它被删除并更改了。谢谢你的帮助:)

1 个答案:

答案 0 :(得分:0)

如果您的代码是从实际文件中复制/粘贴的,那么您的SQL正在使用字段列表中的incorect引号。它应该是:

    $query = "
        INSERT INTO image_area2
            (`id`,`name`,`path`,`unique_id`)
        VALUES
            ('','$file_name','uploads/$file_name','$_POST[un_id]');
    ";

(请注意id周围的后退,而不是正常的单引号

如果id是自动递增的主键,则将SQL更改为:

    $query = "
        INSERT INTO image_area2
            (`name`,`path`,`unique_id`)
        VALUES
            ('$file_name','uploads/$file_name','$_POST[un_id]');
    ";

另外,一些指示:

  1. 清理变量。 $_POST['un_id']对SQL非常开放 注射
  2. 远离mysql_功能 - 他们是 弃用。移至mysqli_PDO等值。这也将 使准备好的功能可用,并消除消毒的需要 您的数据(如果使用得当)