2016-07-01 2 views
0

У меня есть набор png-изображений (16x16), хранящихся в папке, которая находится на моем веб-сервере. Путь: c:/wamp/www/website/images/flags. Эти изображения представляют собой различные флаги стран мира.Как ссылаться на изображение, хранящееся в каталоге в таблице MySQL?

Я хочу иметь доступ к этим изображениям динамически, когда я вывешу список стран и их соответствующие флаги в таблицу через PHP-скрипт.

В моей базе данных я создал следующую таблицу

CREATE TABLE country (
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    countryCode CHAR(2) NOT NULL, 
    countryName VARCHAR (50) NOT NULL, 
    phoneCode CHAR (3) NOT NULL, 
    imagePathName VARCHAR (254) NOT NULL, 
    PRIMARY KEY(ID) 
) ENGINE = InnoDB; 

Как изображение ссылающейся работу в таком случае? Сохраняю ли я путь так же, как любой CSS или HTML?

Если я должен хранить путь, я просто добавить его в следующем виде:

INSERT INTO country VALUES ('', 'CD', 
'Democratic Republic of Congo, '243', 'c:/wamp/www/website/images/flags/cd.png') 

или я должен иметь столбец с типом BLOB данных. Должно ли быть так, как будет выглядеть инструкция INSERT?

+1

Если вы сохраняете путь, вы должны иметь возможность хранить его, как и любую другую строку, вам понадобится только BLOB, если вы сохраняете фактическое изображение. – Uueerdo

+0

Другими словами, 'yes' – Strawberry

ответ

2

по предложению Махеш в:

Вот код

<?php 
$dbc = mysqli_connect('127.0.0.1','root','','fortesting') or die (mysqli_error($dbc)); 

$query = "SELECT countryCode AS 'Code', countryName AS 'Name', filename AS 'Flag' 
FROM country"; 

$execute = mysqli_query($dbc, $query); 
?> 
<html> 
    <head> 
     <title>test</title> 
    </head> 
    <body> 
     <table> 
     <?php while ($result = mysqli_fetch_array($execute)){ ?> 
      <tr> 
       <td><?php echo $result['Name'] ?> </td> 
       <td><img src="images/flags/<?php echo $result['Flag']?>.png"></td> 
      </tr> 
     <?php } ?> 
     </table> 
    </body> 
</html> 

В моей таблице есть три основных столбца: countryCode, countryName и имя файла. Я вставил несколько значений, таких как:

INSERT INTO country (countryCode, countryName, filename) VALUES 
('DZ', 'Algeria', 'dz'); 

Цикл while() отображает содержимое таблицы MySQL.

В первом столбце HTML таблицы название страны отображается через:

<td><?php echo $result['Name'] ?> </td> 

Во втором столбце HTML таблицы имя файла флаг, который представляет, что страна печатается внутри URL-адрес:

<td><img src="images/flags/<?php echo $result['Flag']?>.png"></td> 

Имена стран и флагов отображаются динамически. Именно то, что мне нужно.

1

моя рекомендация заключается в следующем

1 не сохранять изображения в My SQL DB. это увеличит размер БД (счетчик страниц), и это будет влиять на производительность БД

2 магазина путь к папке изображений в файле конфигурации (PHP)

3 магазина только имя изображения или идентификатор в таблице базы данных и с помощью приложения вы можете объединить имя + путь и получить полный путь к изображению

я думаю, это будет иметь смысл для вас

+0

blob, средний и большой текстовый тип данных может замедлить производительность db –

+0

Большое спасибо Mahesh. У меня есть идея, как я могу обойти это, только сохраняя имя изображения в базе данных. Я сделаю окончательный результат, когда закончим. – Hozington

+0

@ Broda-man да, пожалуйста, добавьте его в качестве ответа, и это поможет другим получить представление о инженере базы данных, поэтому я дал некоторую подсказку формы DB, но не конец приложения –

Смежные вопросы