id |
file_name |
file_path |
file_public_path |
1 |
84bc1a94241c4e1eb9efd97f1e2f2ae7 |
/home/klatosinski/www/strona/public/files/ |
/files/ |
2 |
84bc1a94241c4e1eb9efd97f1e2f2ae7 |
/home/klatosinski/www/strona/public/files/ |
/files/ |
Przy zapisywaniu plików do bazy ustawiasz ścieżki. Możesz je równie dobrze trzymać też w jakimś configu i później w widoku (czyli tam gdzie masz html) łączyć, ale chyba tak jest lepiej (chociaż nie jestem ekspertem).
SELECT CONCAT(file_public_path, file_name) as src FROM files
$db = new PDO('mysql:......;charset=utf8', 'username', 'password'); // poczytaj co tam dokładnie ma być
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // domyślnie PDO nie pokaże Ci błędów tylko po cichu sobie pójdzie dalej, my ustawiamy, żeby walił wyjątki (czyli żebyś się o tym dowiedziała)
$files = $db->query($sql, PDO::FETCH_ASSOC); // dodatkowy parametr mówi o tym, że pobierze nam wartości w tablicy asocjacyjnej array( 'src' => '....' )
<?php foreach($files as $src) :?>
<img src="<?= $src ?>" />
<?php endif;?>
Uważaj na sql injection! Zawsze jeżeli chcesz użyc w zapytaniu jakiś wartości, to korzystaj z prepared statement bo inaczej zrobisz sobie krzywdę. Co to jest SQL Injection
$stmt = $db->prepare("INSERT INTO files (file_name, file_path, file_public_path) VALUES (:file_name, :file_path, :file_public_path)");
$stmt->bindParam(':file_name', '84bc1a94241c4e1eb9efd97f1e2f2ae7');
$stmt->bindParam(':file_path', '/home/klatosinski/www/strona/public/files/');
$stmt->bindParam(':file_public_path', '/files/');
$stmt->execute();