まず、DBをつくってデータを入れます。
create database img;
CREATE TABLE img.pixtabay (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
imgurl VARCHAR(60),
tags VARCHAR(255)
);
insert into pixtabay(imgurl, tags) values('img/20180331-0.jpeg', 'スマー トな腕時計, アップル, 技術');
insert into pixtabay(imgurl, tags) values('img/20180331-2.jpeg', 'iphone, 6 s, プラス');
insert into pixtabay(imgurl, tags) values('img/20180331-0.jpeg', 'スマー トな腕時計, アップル, 技術');
mysql> select * from pixtabay;
+----+---------------------+-------------------------------------------------+
| id | imgurl | tags |
+----+---------------------+-------------------------------------------------+
| 1 | img/20180331-0.jpeg | スマートな腕時計, アップル, 技術 |
| 2 | img/20180331-2.jpeg | iphone, 6 s, プラス |
| 3 | img/20180331-0.jpeg | スマー トな腕時計, アップル, 技術 |
+----+---------------------+-------------------------------------------------+
3 rows in set (0.00 sec)
次に、DBからデータを取り出して、表示します。
<?php
$dsn = "mysql:dbname=img;host=localhost";
$user = "hoge";
$password = "hogehoge";
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
print('connection failed:'.$e->getMessage());
}
$sql = "select * from pixtabay";
$stmt = $dbh->query($sql);
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
$url[] = $result["imgurl"];
}
var_dump($url);
foreach($url as $value){
echo "<img src=\"" .$value. "\" width=\"200\" height=\"120\" >";
}
?>

そして、fetchの条件に、〇〇を含むを入れます。ここでは、タグに”プラス”という単語が入っていた場合を考えます。
<?php
$dsn = "mysql:dbname=img;host=localhost";
$user = "foo";
$password = "foofoo";
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
print('connection failed:'.$e->getMessage());
}
$sql = "select * from pixtabay";
$stmt = $dbh->query($sql);
$query = "プラス";
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
if(strpos($result["tags"], $query) !== false){
$url[] = $result["imgurl"];
}
}
echo "タグに". $query. "を含む画像<br>";
// var_dump($url);
foreach($url as $value){
echo "<img src=\"" .$value. "\" width=\"200\" height=\"120\" >";
}
?>
おいおい、割と簡単にできたけど、こんなんでいいのか?
