使用AJAX将图片从MySQL Blob导入HTML文件输入类型时出现问题

时间:2019-07-13 22:15:19

标签: php html mysql ajax

标题听起来很混乱,所以我先详细说明。我有一个网站,除其他功能外,该网站还允许用户从手机上载图片,并将其上传到MySQL数据库,并以blob格式存储,效果很好。我还有一个运行AJAX功能的按钮,该功能允许用户从所说的MySQL数据库中导入信息,然后将其返回到相同的HTML字段(继续它们离开的地方)。除了用于图片的“文件” HTML输入字段类型之外,此AJAX函数适用于所有内容。

要将文件数据输入MySQL,我使用addslashes(file_get_contents($image));,我猜我必须撤消才能将其放回文件输入字段。如果是这种情况,我不知道该怎么做。我的猜测是,文件数据以一种格式存储在HTML输入字段类型中,而以另一种格式存储在MySQL中,但是我什至不确定这种情况,更不用说如何解决了。

如果有帮助的话,这里有很多。

HTML / AJAX:

<button type="button" id = 'ajaxButton' onClick = 'imAnAjaxFunction()';>TEST</button>

<label for="Image1"> Picture 01: </label>
<input type="file" id="Image1" name="Image1" value="Image1" 

<script>
function imAnAjaxFunction()
{   
var val1 = $('#Serial').val(); //
var request = $.ajax({
    url: 'import.php',
    type: 'get',
    data: { Serial: val1 }, //
    dataType: 'html'
});

request.done( function ( data ) {
    //alert(data);
});

request.fail( function ( jqXHR, textStatus) {
    console.log( 'Sorry: ' + textStatus );
});

var val1 = $('#Serial').val(); //
$.ajax
({
    url: 'import.php',
    type: 'get',
    dataType: 'JSON',
    data: { Serial: val1 }, //
    success: function(response)
    {
        var len = response.length;
        for(var i=0; i<len; i++)
        {
            document.getElementById('DateSet').value = response[i].DateSet;
            document.getElementById('JobName').value = response[i].JobName;
            document.getElementById('Image1').value = response[i].Image1;
        }
    }
})

}
</script>

insert.php大多数我不认为是相关事件

$image = $_FILES['Image1']['tmp_name'];
$imagetmp=addslashes(file_get_contents($image));

import.php

<?php
ob_start();

$servername = "";
$username = "";
$password = "";
$dbname = "";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM setcrewreport WHERE Serial = '$_GET[Serial]'";

$result = $conn->query($sql); //query

if ($result->num_rows > 0) 
{
// output data of each row
while($row = $result->fetch_assoc())
{
    $Serial = $row['Serial'];
    $DateSet = $row['DateSet'];
    $JobName = $row['JobName'];
    $Image1   = $row['Image1'];

    $return_arr[] = array("Serial" => $Serial,
                          "DateSet" => $DateSet,
                          "JobName" => $JobName,
                          "Image1" => $Image1);
}
ob_end_clean();
// Encoding array in JSON format
echo json_encode($return_arr);
}
else
{
echo "0 results";
}

$conn->close();
?>

这与参数化SQL语句有多近?

$sql = $mysqli->prepare("SELECT * FROM setcrewreport WHERE Serial = ?");
$sql ->bind_param("si", '$_GET[Serial]');

1 个答案:

答案 0 :(得分:0)

我最初的目标是不可能的,所以我要走另一条路。

SQL语句的参数化如下:

$sql = $conn->prepare("SELECT * FROM setcrewreport WHERE Serial = ?");
$sql->bind_param("s", $_GET['Serial']);
$sql->execute();