用于上载多个图像的表单&;通过PHP将数据传输到MySQL数据库

用于上载多个图像的表单&;通过PHP将数据传输到MySQL数据库,php,html,mysql,database,image,Php,Html,Mysql,Database,Image,我们正在开发一个内部应用程序,仅用于通过表单和PHP脚本将2个图像和一些文本框上传到MySQL数据库 我们可以得到一个简单的表单,其中只有文本框提交,没有图像字段,我们可以得到一个只有图像字段的表单,并将图像作为BLOB上传到mySQL数据库,但当结合使用2个表单时,我们只能让它上传图像,而不是文本框 请在下面找到我们的php上传脚本的代码,当我们的表单提交时,这会将2个图像字段作为BLOB上传到数据库,但不会将其他文本字段上传到数据库,非常感谢您提供任何帮助,以指出我们的错误: <?ph

我们正在开发一个内部应用程序,仅用于通过表单和PHP脚本将2个图像和一些文本框上传到MySQL数据库

我们可以得到一个简单的表单,其中只有文本框提交,没有图像字段,我们可以得到一个只有图像字段的表单,并将图像作为BLOB上传到mySQL数据库,但当结合使用2个表单时,我们只能让它上传图像,而不是文本框

请在下面找到我们的php上传脚本的代码,当我们的表单提交时,这会将2个图像字段作为BLOB上传到数据库,但不会将其他文本字段上传到数据库,非常感谢您提供任何帮助,以指出我们的错误:

<?php
$con=mysqli_connect("localhost","Username","Password","outofhours");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$maxsize = 10000000; //set to approx 10 MB

$sitename = mysqli_real_escape_string($con, $_POST['sitename']);
$siteaddress = mysqli_real_escape_string($con, $_POST['siteaddress']);
$sitepostcode = mysqli_real_escape_string($con, $_POST['sitepostcode']);
$eqmake = mysqli_real_escape_string($con, $_POST['eqmake']);
$eqmodel = mysqli_real_escape_string($con, $_POST['eqmodel']);
$eqdesc = mysqli_real_escape_string($con, $_POST['eqdesc']);
$eqserial = mysqli_real_escape_string($con, $_POST['eqserial']);
$eqassetno = mysqli_real_escape_string($con, $_POST['eqassetno']);
$eqconttype = mysqli_real_escape_string($con, $_POST['eqconttype']);
$brewery = mysqli_real_escape_string($con, $_POST['brewery']);
$date = mysqli_real_escape_string($con, $_POST['date']);
$onsitetime = mysqli_real_escape_string($con, $_POST['onsitetime']);
$offsitetime = mysqli_real_escape_string($con, $_POST['offsitetime']);
$custprintname = mysqli_real_escape_string($con, $_POST['custprintname']);
$custposition = mysqli_real_escape_string($con, $_POST['custposition']);
$engname = mysqli_real_escape_string($con, $_POST['engname']);

// check if a file was submitted
if(!isset($_FILES['engsig1']))
{
    echo '<p>Please select a file</p>';
}
else
{
    try {
    $msg= upload();  //this will upload your image
    echo $msg;  //Message showing success or failure.
    }
    catch(Exception $e) {
    echo $e->getMessage();
    echo 'Sorry, could not upload file';
    }
}



// the upload function

function upload() {
    include "file_constants.php";
    $maxsize = 10000000; //set to approx 10 MB

    //check associated error code
        if($_FILES['engsig1']['error']==UPLOAD_ERR_OK) {

        //check whether file is uploaded with HTTP POST
        if(is_uploaded_file($_FILES['engsig1']['tmp_name'])) {    

            //checks size of uploaded image on server side
            if( $_FILES['engsig1']['size'] < $maxsize) {  

               //checks whether uploaded file is of image type
                 $finfo = finfo_open(FILEINFO_MIME_TYPE);
                if(strpos(finfo_file($finfo, $_FILES['engsig1']['tmp_name']),"image")===0) {    
                    // prepare the image for insertion
                    $imgData1 =addslashes (file_get_contents($_FILES['engsig1']['tmp_name']));
                    $imgData2 =addslashes (file_get_contents($_FILES['custsig1']['tmp_name']));

                    // put the image in the db...
                    // database connection
                    mysql_connect($host, $user, $pass) OR DIE (mysql_error());

                    // select the db
                    mysql_select_db ($db) OR DIE ("Unable to select db".mysql_error());

                    // our sql query
                    $sql = "INSERT INTO oohours (sitename, siteaddress, sitepostcode, eqmake, eqmodel, eqdesc, eqserial, eqassetno, eqconttype, brewery, date, onsitetime, offsitetime, custprintname, custsig1, custposition, engname, engsig1)
                    VALUES
                    ('$sitename', '$siteaddress', '$sitepostcode', '$eqmake', '$eqmodel', '$eqdesc', '$eqserial', '$eqassetno', '$eqconttype', '$brewery', '$date', '$onsitetime', '$offsitetime', '$custprintname', '{$imgData1}', '$custposition', '$engname', '{$imgData2}')";

                    // insert the image
                    mysql_query($sql) or die("Error in Query: " . mysql_error());
                    $msg='<p>Image successfully saved in database with id ='. mysql_insert_id().' </p>';
                }
                else
                    $msg="<p>Uploaded file is not an image.</p>";
            }
             else {
                // if the file is not less than the maximum allowed, print an error
                $msg='<div>File exceeds the Maximum File limit</div>
                <div>Maximum File limit is '.$maxsize.' bytes</div>
                <div>File '.$_FILES['engsig1']['name'].' is '.$_FILES['engsig1']['size'].
                ' bytes</div><hr />';
                }
        }
        else
            $msg="File not uploaded successfully.";

    }
    else {
        $msg= file_upload_error_message($_FILES['engsig1']['error']);
    }
    return $msg;
}

// Function to return error message based on error code

function file_upload_error_message($error_code) {
    switch ($error_code) {
        case UPLOAD_ERR_INI_SIZE:
            return 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
        case UPLOAD_ERR_FORM_SIZE:
            return 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
        case UPLOAD_ERR_PARTIAL:
            return 'The uploaded file was only partially uploaded';
        case UPLOAD_ERR_NO_FILE:
            return 'No file was uploaded';
        case UPLOAD_ERR_NO_TMP_DIR:
            return 'Missing a temporary folder';
        case UPLOAD_ERR_CANT_WRITE:
            return 'Failed to write file to disk';
        case UPLOAD_ERR_EXTENSION:
            return 'File upload stopped by extension';
        default:
            return 'Unknown upload error';
    }
}
?>

您的错误可能在于您正在通过彼此使用mysql和mysqli函数。这不管用。要么你使用mysqli,要么你使用mysql。。我会选择mysqli

我是说,你自己检查一下。您可以使用mysqli对它们进行清理,但是在连接到数据库的upload函数中,您可以使用mysql函数

                    // put the image in the db...
                    // database connection
                    mysql_connect($host, $user, $pass) OR DIE (mysql_error());

                    // select the db
                    mysql_select_db ($db) OR DIE ("Unable to select db".mysql_error());

                    // our sql query
                    $sql = "INSERT INTO oohours (sitename, siteaddress, sitepostcode, eqmake, eqmodel, eqdesc, eqserial, eqassetno, eqconttype, brewery, date, onsitetime, offsitetime, custprintname, custsig1, custposition, engname, engsig1)
                    VALUES
                    ('$sitename', '$siteaddress', '$sitepostcode', '$eqmake', '$eqmodel', '$eqdesc', '$eqserial', '$eqassetno', '$eqconttype', '$brewery', '$date', '$onsitetime', '$offsitetime', '$custprintname', '{$imgData1}', '$custposition', '$engname', '{$imgData2}')";

                    // insert the image
                    mysql_query($sql) or die("Error in Query: " . mysql_error());
                    $msg='<p>Image successfully saved in database with id ='. mysql_insert_id().' </p>';
//将图像放入数据库中。。。
//数据库连接
mysql_connect($host,$user,$pass)或DIE(mysql_error());
//选择数据库
mysql_select_db($db)或DIE(“无法选择db”。mysql_error());
//我们的sql查询
$sql=“插入oohours(站点名称、站点地址、站点邮政编码、eqmake、eqmodel、eqdesc、eqserial、eqassetno、eqcontenttype、酿酒厂、日期、现场时间、场外时间、custprintname、custsig1、custposition、engname、engsig1)
价值观
(“$sitename”、“$siteaddress”、“$sitepostcode”、“$eqmake”、“$eqmodel”、“$eqdesc”、“$eqserial”、“$eqassetno”、“$eqContentType”、“$brewery”、“$date”、“$onsitetime”、“$offsitetime”、“$custprintname”、“{$imgData1}、“$custposition”、“$engname”、“{$imgData2}”);
//插入图像
mysql_query($sql)或die(“查询中的错误:”.mysql_Error());
$msg='图像已成功保存在id为的数据库中。mysql_insert_id()。

是mysql函数,而其余的mysqli则使用

<?php
$con=mysqli_connect("localhost","Username","Password","outofhours");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$maxsize = 10000000; //set to approx 10 MB

$sitename = mysqli_real_escape_string($con, $_POST['sitename']);
$siteaddress = mysqli_real_escape_string($con, $_POST['siteaddress']);
$sitepostcode = mysqli_real_escape_string($con, $_POST['sitepostcode']);
$eqmake = mysqli_real_escape_string($con, $_POST['eqmake']);
$eqmodel = mysqli_real_escape_string($con, $_POST['eqmodel']);
$eqdesc = mysqli_real_escape_string($con, $_POST['eqdesc']);
$eqserial = mysqli_real_escape_string($con, $_POST['eqserial']);
$eqassetno = mysqli_real_escape_string($con, $_POST['eqassetno']);
$eqconttype = mysqli_real_escape_string($con, $_POST['eqconttype']);
$brewery = mysqli_real_escape_string($con, $_POST['brewery']);
$date = mysqli_real_escape_string($con, $_POST['date']);
$onsitetime = mysqli_real_escape_string($con, $_POST['onsitetime']);
$offsitetime = mysqli_real_escape_string($con, $_POST['offsitetime']);
$custprintname = mysqli_real_escape_string($con, $_POST['custprintname']);
$custposition = mysqli_real_escape_string($con, $_POST['custposition']);
$engname = mysqli_real_escape_string($con, $_POST['engname']);

您正在通过彼此使用
MYSQL
MYSQLI
函数您好,我们已将其更改为MYSQL,但仍然无法工作:我们是否遗漏了一些内容?Thanksecho拿出$sql,看看它返回了什么,然后通过php my admin抛出它,看看是否有效?我想有些地方还没定下来。我现在看不出问题所在,在浏览完之后。我们已经将其回音出来,所有的值都显示为空白,除了图像值。好的,那么你至少知道哪里出了问题,我告诉你。它们是否都以正确的形式放置?(不是两个单独的表格)?因为您只检查图像是否已设置,而不检查其余数据。您好,在进一步测试(将echo$sitename放入脚本的不同部分)后,我们发现存储了值,但一旦函数启动,该值就不再显示,因此错误在该函数中。