将图像插入数据库

时间:2017-04-27 11:07:58

标签: php mysql

我试图将图像上传到mysql数据库,但是当我上传图像时,我收到确认消息,但是当我检查我的数据库时图像行是空的,我做错了什么?

<?php include "connection.php"; ?>
<?php
$n=$_POST["num"];
$t=$_POST["texto"];
$i=$_POST["imagem"];
$image = addslashes(file_get_contents($_FILE['$i']['tmp_name']));

if ($connect->connect_error){
	die("Connection failed: " . $connect->connect_error);
}

$sql = "UPDATE servicos SET texto='$t', imagem='{$image}' where nmr=$n" ;

if ($connect->query($sql) === TRUE) {
	echo "informação atualizada";
} else {
	echo "Error: " . $sql . "<br>" . $connect->error;
}

$connect->close();
?>
<html>
<body>
<div class="formulario" style="width: 100%; height: 100%;">
<form enctype="multipart/form-data" name="form1" target="apresenta" method="post" action="menu2.php" style="position:absolute; top:70;left:10
border:thin; border-style:none;">
<label> Atualizar dados </label><br>
Numero:&nbsp;<input type="text" name="num" value=""><br>
Texto:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="texto" value=""><br>
Imagem:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="file" name="imagem" value=""><br>
<input type="submit" name="submit" value="enviar">&nbsp;&nbsp;&nbsp;
<input type="reset" value="limpar">
</form>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

除了所有注释“你不应该在表中存储文件因为......”之外,这是有效的(使用PHP 7):

<?php
if(isset($_POST['submit'])) {
    var_dump($_FILES);
    $dbh = new PDO("mysql:host=127.0.0.1;dbname=test", "root", "");
    $stm = $dbh->prepare("INSERT INTO test_img (cont) VALUES (?)");
    $stm->execute(array(file_get_contents($_FILES['fileinput']['tmp_name'])));
}
?>
<form method="post" enctype="multipart/form-data">
    File: <input type="file" name="fileinput"><br>
    <button name="submit">Upload</button>
</form>

可能的错误来源:

  • $connect->query($sql) === TRUE应为$connect->query($sql) !== false
  • 您想要UPDATE的条目不存在
  • imagem='{$image}'是一种相当“hacky”的方式来插入变量,使用连接:$sql = "UPDATE servicos SET texto='".$t."', imagem='".$image."' where nmr=".$n;

希望这有帮助。