Wie kann man Sie einfügen .pdf-Datei in eine mySql-Datenbank mit php

Ich versuche zum einfügen einer pdf-Datei in meine Datenbank mit php. Ich weiß, dass ist normalerweise keine gute Praxis, aber ich muss um nichts weniger als das.

So, hier ist das schema für die Tabelle bin ich versucht, legen Sie die pdf-Datei in:

    create table manager_certificate(
    manager_id int,
    certificate_id int,
    certificate blob,
    primary key(manager_id, certificate_id),
    foreign key(manager_id) references manager(id)
) ENGINE=InnoDB;

Ich habe eine html-Seite, die es ermöglicht, die Nutzung, um die Datei auszuwählen, und hat eine upload-Schaltfläche, rufen Sie die php-Datei, sollte die Datei hochladen in die Datenbank.

html:

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

php:

<?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('dbclass.cs.nmsu.edu', 'corbinc', 'corbinc430', 'cs482corbinc');
        if(mysqli_connect_errno()) {
            die("MySQL connection failed: ". mysqli_connect_error());
        }

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

        //Create the SQL query
        $query = "
            INSERT INTO 'manager_certificate'('certificate')
            VALUES ( '{$data}' )";

        //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}</pre>";
        }
    }
    else {
        echo 'An error accured while the file was being uploaded. '
           . 'Error code: '. intval($_FILES['uploaded_file']['error']);
    }

    //Close the mysql connection
    $dbLink->close();
}
else {
    echo 'Error! A file was not sent!';
}

?>

So, ich habe versucht den obigen code und ich erhalte die folgende Fehlermeldung:

Error! Failed to insert the file
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''manager_certificate'('certificate')
            VALUES ( '%PDF-1.5\n%ÐÔÅØ\n3 0 ' at line 1

Wie kann ich diesen Fehler beheben? Das problem ist in meinem schema? Oder die php vielleicht?

  • Hat man sich bei diesem ähnlich SO schreiben: stackoverflow.com/questions/4813913/...
  • Versuchen Sie, Ihre real_escape_string Aufruf der Funktion. Ihre PDF-Datei ist eine binäre Datei, keine Zeichenfolge.
  • Haben Sie sich überlegt das hochladen einer Datei auf den server, und speichern Sie es dort, während MySQL enthält einen Zeiger (wie ein URI) der Datei? Das wäre viel besser als der Versuch das einfügen eine gesamte Datei als blob in eine Spalte.
InformationsquelleAutor user2297613 | 2013-11-14
Schreibe einen Kommentar