php - 上传图片大于 1.0MB 时 MySQL 服务器已经消失

标签 php html mysql pdo

我在上传大小为 1.5MB 的图片时收到警告,并且图片没有存储到数据库中,它适用于小于 1MB 的图片。

请帮忙,因为我坚持了几天这些警告。

这是我的代码:

<?php

print_r($_FILES);

//connect to the database//

try {
$pdo = new PDO('mysql:host=localhost;dbname=forms1', 'root', 'root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$file = $_FILES['image']['tmp_name']; 

$upload=0;

for($count = 0; $count < count($_FILES['image']); $count++)
{
if(!empty($_FILES['image']['name'][$count])){
$image_name[$count] = addslashes($_FILES['image']['name'][$count]); echo '<br \>';
$image_size[$count] = @getimagesize($_FILES['image']['tmp_name'][$count]);
$error[$count] = $_FILES['image']['error'][$count];

if($image_size[$count] == FALSE  || ($image_size[$count]) == 0)
    echo "That's not an image";

$upload++;
echo $upload;

// Temporary file name stored on the server
 $tmpName[$count]  = $_FILES['image']['tmp_name'][$count];

// Read the file
$fp[$count]   = fopen($tmpName[$count], 'r');
$data[$count] = fread($fp[$count], filesize($tmpName[$count]));
$data[$count] = addslashes($data[$count]);
fclose($fp[$count]);

// Create the query and insert into database.

$stmt = $pdo->prepare('INSERT INTO files (name,image) VALUES (:name,:image)');
$stmt->execute(array('name' => $image_name[$count],'image' => $data[$count]));

    if(!$stmt)
    echo "Problem uploding the image. Please check your database";  
}
}
} catch (PDOException $e) {
print "Error!: " . $e->getMessage();
die();
}

?>

这些是我收到的警告:

Warning: PDOStatement::execute(): MySQL server has gone away in C:\xampp\htdocs\testing\test.php on line 56

Warning: PDOStatement::execute(): Error reading result set's header in C:\xampp\htdocs\testing\test.php on line 56

这一行的警告点:

$stmt->execute(array('name' => $image_name[$count],'image' => $data[$count]));

最佳答案

答案很简单:

不要在数据库中存储文件。

这样你一次解决的不是一个而是十几个问题。
只是因为关系数据库不是存放二进制文件的地方。

您收到的这条错误消息是一个警告标志:“您给服务器带来了不必要的巨大负担”。当您需要取回文件时,此负载甚至会增加。

当存储在文件系统中时,二进制文件不会妨碍任何人,而且 - 最重要的是 - 服务速度非常快,不会花费您宝贵的资源

关于php - 上传图片大于 1.0MB 时 MySQL 服务器已经消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19581658/

相关文章:

javascript - jquery 对话框小部件不适用于行表中的 onclick 按钮

php - 使用 mySQL 和 PHP 显示来自多个表的数据

php - 为什么 docker 在 Windows 10 上不同步容器内的文件?

javascript - 如何将 onclick 事件添加到 Razor View 中的单选按钮

javascript - 清理 javascript/jquery 中的字符串

html - 如何扩展 jinja block 模板并多次使用它

PHP 使用 ORDER BY 查询 MySQL 对数据库项目进行排序

java - 如何使用 elasticsearch 重命名实体中的 id 字段?

php 包含条件注释

mysql - 错误 #1005 - 无法创建表(错误号 : 150)