Question

Je cherche à télécharger un fichier .pdf dans une base de données de MySQL avec PHP.

Il est tout bon, sauf le contenu du fichier. Peu importe la façon dont il me semble essayer d'échapper à des caractères spéciaux, la requête échoue toujours, la plupart du temps avec « Unknown commande \ n ».

Je l'ai utilisé addslashes, mysql_real_escape_string, removeslashes etc.

Est-ce que quelqu'un a des idées sur la façon d'échapper le contenu du fichier?

Merci beaucoup,

Était-ce utile?

La solution

Je l'ai utilisé la séquence suivante avant, qui semble fonctionner très bien, et stockera toutes les données dans la db, y compris les images, PDFs, tableaux de données, etc ...:)

Le stockage des données (peut être une chaîne, un tableau, un objet, etc.);

En premier lieu, faire tourner les données dans une chaîne codée base64

$strData = strtr(
             base64_encode(
               addslashes(
                 gzcompress( serialize($dataToStore) , 9)
                 )
               ) , '+/=', '-_,');

stocker ensuite que les données de chaîne dans la db ...


Récupération des données;

Extraire les données de chaîne de la db

décoder les données à ce que vous voulez (vous devrez peut-être effectuer une étape supplémentaire après en fonction des données d'entrée, un tableau, image, etc.)

$returnData = unserialize(
                gzuncompress(
                  stripslashes(
                    base64_decode(
                      strtr($strDataFromDb, '-_,', '+/=')
                    )
                  )
                )
              );

Cela m'a certainement aidé à stocker ce que je devais stocker dans une base de données mysql!

Autres conseils

Je ne vois pas pourquoi vous voulez stocker un fichier dans une base de données, mais je vous suggère de jeter un oeil à instructions préparées .

Devinez: Vous pouvez rencontrer des erreurs en raison de l'incompatibilité entre les jeux de caractères. PDF est probablement un fichier binaire de sorte que vous devez vous assurer que la colonne db est configuré pour gérer cela.

A côté du problème que vous pourriez échapper à rencontrer des problèmes « paquet trop grand » si la variable système (MySQL) max_allowed_packet est réglé sur une "valeur petite".
En utilisant l'extension mysqli, préparé des déclarations et mysqli_stmt :: send_long_data vous pouvez éviter les problèmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top