まず、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\" >"; } ?>
おいおい、割と簡単にできたけど、こんなんでいいのか?