Как вставлять, отображать и извлекать данные BLOB-объектов в базе данных MySQL с помощью PHP (26 февраля 2019 г.) - PullRequest
0 голосов
/ 26 февраля 2019

У меня здесь есть рабочий код о том, как вставлять, отображать и извлекать BLOB-файлы в базе данных MySQL, используя php.проблема в том, что некоторые файлы, в том числе pdf, mp3 и т. д., не могут быть вставлены в базу данных и выдают эту ошибку:

(Предупреждение: mysqli :: query (): сервер MySQL исчез в C: \ wamp64 \ www \ add_file.php в строке 28) и (Предупреждение: mysqli :: query (): ошибка чтения заголовка набора результатов в C: \ wamp64 \ www \ add_file.php в строке 28).

Я создал соединение со следующими ... server="localhost", username="root', password="", dbname="recordmain_db", и я создаю таблицу, помещая код на вкладке sql в phpmyadmin,Любая помощь будет высоко оценена.Заранее спасибо.

Создание таблицы в Phpmyadmin

CREATE TABLE `file` (
    `id`        Int Unsigned Not Null Auto_Increment,
    `name`      VarChar(255) Not Null Default 'Untitled.txt',
    `mime`      VarChar(50) Not Null Default 'text/plain',
    `size`      BigInt Unsigned Not Null Default 0,
    `data`      MediumBlob Not Null,
    `created`   DateTime Not Null,
    PRIMARY KEY (`id`)
)

Файл загрузки HTML (uploadsample.php)

<!DOCTYPE html>
<head>
<title>MySQL file upload example</title>
<meta http-equiv="content-type" content="text/html;     
charset=UTF-8">
</head>
<body>
<form action="add_file.php" method="post" 
enctype="multipart/form-data">
    <input type="file" name="uploaded_file" required ><br>
    <input type="submit" value="Upload file">
</form>
<p>
    <a href="list_files.php">See all files</a>
</p>
</body>
</html>

PHP-код для добавления данных в базу данных (add_file.php)

<code><?php
// Check if a file has been uploaded
if(isset($_FILES['uploaded_file'])) {
// Make sure the file was sent without errors
if($_FILES['uploaded_file']['error'] == 0) {
    // Connect to the database
    $dbLink = new mysqli('localhost', 'root', '',     
'recordmain_db');
    if(mysqli_connect_errno()) {
        die("MySQL connection failed: ". 
mysqli_connect_error());
    }

    // Gather all required data
    $name = $dbLink- 
>real_escape_string($_FILES['uploaded_file']['name']);
    $mime = $dbLink- 
>real_escape_string($_FILES['uploaded_file']['type']);
    $data = $dbLink- 
>real_escape_string(file_get_contents($_FILES  
['uploaded_file']['tmp_name']));
    $size = intval($_FILES['uploaded_file']['size']);

    // Create the SQL query
    $query = "
        INSERT INTO `file` (
            `name`, `mime`, `size`, `data`, `created`
        )
        VALUES (
            '{$name}', '{$mime}', {$size}, '{$data}', NOW()
        )";

    // Execute the query
    $result = $dbLink->query($query);

    // Check if it was successfull
    if($result) {
        echo 'Success! Your file was successfully added!';
    }
    else {
        echo 'Error! Failed to insert the file'
           . "<pre>{$dbLink->error}
";}} else {echo 'Ошибка при загрузке файла.'. 'Код ошибки:'. intval ($ _ FILES [' uploaded_file '] [' error ']);} // Закрыть соединение mysql $ dbLink-> close ();} else {echo' Ошибка! Файл не был отправлен! ';} // Выводить ссылку на главную страницу echo '

Нажмите здесь , чтобы вернуться

';?>

Отображение данных из базы данных sqld в формате htmltable (list_files.php)

<code><?php
// Connect to the database
$dbLink = new mysqli('localhost', 'root', '',     
'recordmain_db');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}

// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM 
`file`';
$result = $dbLink->query($sql);

// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
    echo '<p>There are no files in the database</p>';
}
else {
    // Print the top of a table
    echo '<table width="100%">
            <tr>
                <td><b>Name</b></td>
                <td><b>Mime</b></td>
                <td><b>Size (bytes)</b></td>
                <td><b>Created</b></td>
                <td><b>&nbsp;</b></td>
            </tr>';

    // Print each file
    while($row = $result->fetch_assoc()) {
        echo "
            <tr>
                <td>{$row['name']}</td>
                <td>{$row['mime']}</td>
                <td>{$row['size']}</td>
                <td>{$row['created']}</td>
                <td><a href='get_file.php?id= 
{$row['id']}'>Download</a></td>
            </tr>";
    }

    // Close table
    echo '</table>';
}

// Free the result
$result->free();
}
else
{
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}
";} // Закрыть соединение mysql $ dbLink-> close ();?> Home

Получить файл из ссылки на скачивание списка таблиц (get_file.php)

<code><?php
// Make sure an ID was passed
if(isset($_GET['id'])) {
// Get the ID
$id = intval($_GET['id']);

// Make sure the ID is in fact a valid ID
if($id <= 0) {
    die('The ID is invalid!');
}
else {
    // Connect to the database
    $dbLink = new mysqli('localhost', 'root', '',     
'recordmain_db');
    if(mysqli_connect_errno()) {
        die("MySQL connection failed: ".     
mysqli_connect_error());
    }

    // Fetch the file information
    $query = "
        SELECT `mime`, `name`, `size`, `data`
        FROM `file`
        WHERE `id` = {$id}";
    $result = $dbLink->query($query);

    if($result) {
        // Make sure the result is valid
        if($result->num_rows == 1) {
        // Get the row
            $row = mysqli_fetch_assoc($result);

            // Print headers
            header("Content-Type: ". $row['mime']);
            header("Content-Length: ". $row['size']);
            header("Content-Disposition: attachment;     
filename=". $row['name']);

            // Print data
            echo $row['data'];
        }
        else {
            echo 'Error! No image exists with that ID.';
        }

        // Free the mysqli resources
        @mysqli_free_result($result);
    }
    else {
        echo "Error! Query failed: <pre>{$dbLink->error}    
";} @mysqli_close ($ dbLink);}} else {echo 'Ошибка! ID не передан.';}?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...