首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个表单上载到数据库

问将多个表单上载到数据库
EN

Stack Overflow用户
提问于 2013-11-28 04:44:12
回答 2查看 105关注 0票数 0

好的,我正在尝试上传图片,然后上传图片描述。图像将上载到数据库,但文本字段不会。

我认为我的代码是正确的,但由于某种原因,数据库中什么都没有。我认为没有任何东西被存储到数组中,我不确定为什么。

这是我的表格。

代码语言:javascript
复制
<form method="post" enctype="multipart/form-data" action="process.php">
<div id="filediv">
<div id="imagefiles">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<label>Upload File:
<input name="userfile[]" type="file" id="userfile" multiple></label>
<label>Item Name: <input name='itemname[]' type="text"></label>
<label>Item Description: <input name="itemdesc[]" type="text"></label>
<label>Item Timeframe: <input name='itemtime[]' type="text"></label>
<label>Item Donor: <input name='itemdonor[]' type="text"></label>
<label>Hidden Information: <input name='hidden[]' type="text"></label>
 </div>
 </div>
<br>

<input type="button" id ="thebutton" value="Add Another File" />
<input name="UploadFile" type="submit" />
</form>

下面是我的函数

代码语言:javascript
复制
function uploadFile()
{
include 'functions.php';
hasSession();
session_start();
$dbhost =   '';
$dblogin = '';
$dbpass = '!';
$dbbase = '';
$conn = mysqli_connect($dbhost, $dblogin, $dbpass, $dbbase);
if(mysqli_connect_errno()){
    printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error()); 
    exit; 
} 
$arrCount = count($_POST["itemname"]);

$name[] = $_POST["itemname"];
$donor[] = $_POST["itemdonor"];
$desc[] = $_POST["itemdesc"];
$time[] = $_POST["itemtime"];
$hide[] = $_POST["hidden"];

for($i=0; $i<$arrCount; $i++){
    $sql = "INSERT into items (name, donor, time, desc, hidden) VALUES ('$name[$i]', '$donor[$i]', '$desc[$i]', '$time[$i]', $hide[$i]')";
}
$numFiles = count($_FILES['userfile']['name']);
for($x=0;$x<$numFiles;$x++){
//($_FILES['userfile'][$counter]['error'] == 0) && 
    if (($_FILES['userfile']['size'][$x] > 0)){
        $fileName = $_FILES['userfile']['name'][$x];
        $tmpName = $_FILES['userfile']['tmp_name'][$x];
        $fileSize = $_FILES['userfile']['size'][$x];
        $fileType = $_FILES['userfile']['type'][$x];
            if ((($_FILES['userfile']['type'][$x] == "image/gif")   
            || ($_FILES['userfile']['type'][$x]== "image/jpeg")
            || ($_FILES['userfile']['type'][$x] == "image/png")
            || ($_FILES['userfile']['type'][$x] == "image/pjpeg")))
            {
                $fp=fopen($tmpName,'r');
                $content=fread($fp,filesize($tmpName));
                $SourceImage=imagecreatefromstring($content);
                $SourceWidth=imagesx($SourceImage); 
                $SourceHeight=imagesy($SourceImage);
                $ratio=$SourceWidth/$SourceHeight;
                $DestWidth=100;
                $DestHeight=$DestWidth/$ratio;
                $DestinationImage=imagecreatetruecolor($DestWidth,$DestHeight);
                imagecopyresampled($DestinationImage,$SourceImage,0,0,0,0,$DestWidth,$DestHeight,$SourceWidth,$SourceHeight); 
                ob_start(); 
                imagejpeg($DestinationImage); 
                $BinaryThumbnail = ob_get_contents(); 
                ob_end_clean(); 
                $thumb = addslashes($BinaryThumbnail);
                $content=addslashes($content);
                fclose($fp);
                $fileName = addslashes($fileName);  
                mysql_connect('hartslogmuseum.db.11661984.hostedresource.com','hartslogmuseum','Alexandria1!');
                mysql_select_db('hartslogmuseum');
                mysql_query("INSERT INTO images (name,size,type,content,thumbnail) VALUES ('$fileName','$fileSize','$fileType','$content','$thumb')") or die('Error, query failed');
           }else{
                $fp=fopen($tmpName,'r');
                $content=fread($fp,filesize($tmpName));
                $content=addslashes($content);
                fclose($fp);
                $fileName = addslashes($fileName);  
                $link = mysqli_connect('!');
                mysqli_select_db($link,'');
                mysqli_query($link,"INSERT INTO images (name,size,type,content) VALUES ('$fileName','$fileSize', '$fileType','$content')"); 
          }
    }else{
        echo "Error: ". $_FILES['userfile']['error'][$x]."<br/>";
    }
}
    echo "<script>alert('The file(s) has been uploaded');location.replace('uploaded.php');</script>";
}
EN

回答 2

Stack Overflow用户

发布于 2013-11-28 05:12:28

desc是一个保留字,需要用反引号括起来。

例如:

代码语言:javascript
复制
`desc`

代码语言:javascript
复制
$sql = "INSERT into items (name, donor, time, `desc`, hidden) VALUES ('$name[$i]', '$donor[$i]', '$desc[$i]', '$time[$i]', $hide[$i]')";

正如MonkeyZeus所说并即将写出同样的注释(同时),最好用反号将表名和列括起来。

例如:

代码语言:javascript
复制
$sql = "INSERT into `items` (`name`, `donor`, `time`, `desc`, `hidden`) VALUES ('$name[$i]', '$donor[$i]', '$desc[$i]', '$time[$i]', $hide[$i]')";

编辑:

我注意到这里有一个漏掉的引号

代码语言:javascript
复制
  '$time[$i]', $hide[$i]'

          • ^

更改为:

代码语言:javascript
复制
'$time[$i]', '$hide[$i]'

完整的代码行:

代码语言:javascript
复制
$sql = "INSERT into `items` (`name`, `donor`, `time`, `desc`, `hidden`) VALUES ('$name[$i]', '$donor[$i]', '$desc[$i]', '$time[$i]', '$hide[$i]')";
票数 1
EN

Stack Overflow用户

发布于 2013-11-28 05:22:57

我建议您更改desc列,因为desc是mysql中用于排序的保留字,它的应用程序如下:

代码语言:javascript
复制
    SELECT * FROM my_table ORDER BY id DESC

因此,您不能使用desc作为列名。要获取有关此类错误的信息,最好使用

代码语言:javascript
复制
    mysql_error()

函数在每个查询之后,即

代码语言:javascript
复制
    mysql_query($sql) or die(mysql_error())

因此,将列名称从desc更改为另一个非mysql保留字名称。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20252726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档