Przechowywanie plików binarnych, takich jak zdjęcia, pliki audio lub wideo, pliki PDF itp., w bazie danych relacyjnej nie jest zawsze najlepszym rozwiązaniem. Bazy danych relacyjnych są zwykle lepsze w przechowywaniu danych o strukturze tabelarycznej, takich jak dane osobowe, adresy itp.
Pliki binarne mogą być duże i przechowywanie ich w bazie danych może spowolnić jej działanie. Ponadto, bazy danych relacyjnych nie są zaprojektowane tak, aby efektywnie przechowywać duże pliki binarne. Dlatego też lepiej jest przechowywać tego typu pliki w systemie plików lub w usłudze przechowywania danych, takiej jak Amazon S3 lub Google Cloud Storage. Następnie można przechowywać adresy URL do tych plików w bazie danych relacyjnej zamiast samych plików. W ten sposób można zachować szybkość działania bazy danych, a jednocześnie mieć dostęp do plików binarnych, kiedy są potrzebne.
Aby wykonać zapytanie UPDATE możesz użyć funkcji mysqli_query() lub PDO. Poniższej przykład użycia funkcji mysqli_query()
// Tworzenie połączenia
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Sprawdzenie połączenia
if (!$conn) {
die("Połączenie nieudane: " . mysqli_connect_error());
}
$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";
if (mysqli_query($conn, $sql)) {
echo "Rekord został zaktualizowany pomyślnie";
} else {
echo "Błąd podczas aktualizowania rekordu: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Aby zaktualizować kolumnę typu BLOB, należy najpierw przeczytać plik binarny do zmiennej w PHP, a następnie użyć funkcji mysqli_real_escape_string() do przetworzenia go na ciąg tekstowy, który można umieścić w zapytaniu SQL. Poniższy kod przedstawia przykład tego, jak to zrobić:
// Ładowanie pliku binarnego do zmiennej
$bin_data = file_get_contents("plik.bin");
// Przetwarzanie pliku binarnego na ciąg tekstowy
$escaped_bin_data = mysqli_real_escape_string($conn, $bin_data);
$sql = "UPDATE MyTable SET bin_column='$escaped_bin_data' WHERE id=1";
if (mysqli_query($conn, $sql)) {
echo "Rekord został zaktualizowany pomy