Veritabanına dosya eklediğim bir sistem üzerinde çalışıyorum. DB'ye blob ekleyebilmemin iki yolu vardır, bu yüzden hangisinin daha iyi olduğunu merak ediyorum.PHP ile MySQL içine blob yerleştirmenin daha iyi yolu
ilk içeriği almak için ve daha sonra bir dize olarak içerik parametresi bağlamak eklerken:
$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));
Sorum şu:
$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);
başka yolu böyle send_long_data kullanmaktır : Her iki eser olarak hangi yolu kullanmak daha iyidir?
Her ikisi de çalışıyor mu? Sorguya bağlamadan önce içeriğe addslash uygulayacağınız, bir çok durumda verilerin bozulacağı anlamına gelir. – symcbean
Sadece metin dosyalarını geri yüklemeyi denedim ve işe yaradı, ama ikili dosyaları bozacak doğru olabilirsiniz ... çözüm aşağıdaki gibi cazip çalışır –