Sto lavorando su un sistema in cui inserisco i file nel database. Ci sono due modi in cui sono in grado di inserire BLOB in DB, quindi sono curioso su quale sia il migliore.Un modo migliore per inserire blob in MySQL con PHP
Il primo è quello di ottenere il contenuto e quindi associare il parametro di contenuti come una stringa quando si inserisce:
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
...
$prep_stmt = "INSERT INTO dokumenty (name, size, type, content, autor, poznamka) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $mysqli->prepare($prep_stmt);
$stmt->bind_param('sissis',$fileName,$fileSize,$fileType,$content,$user_id,$poznamka);
L'altro modo è quello di utilizzare send_long_data come questo:
$content = NULL;
...
$prep_stmt = "INSERT INTO dokumenty (name, size, type, content, autor, poznamka) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $mysqli->prepare($prep_stmt);
$stmt->bind_param('sisbis',$fileName,$fileSize,$fileType,$content,$user_id,$poznamka);
$stmt->send_long_data(3, file_get_contents($tmpName));
La mia domanda è : quale modo è meglio utilizzare come entrambi i lavori?
Entrambi funzionano? Che stai applicando addslashes al contenuto prima di legarlo alla query significa che in molti casi i dati saranno corrotti. – symcbean
Ho provato a scaricare solo i file di testo e ha funzionato, ma potresti avere ragione che corromperà ai file binari ... la soluzione qui sotto funziona come un incantesimo –