pixtabay apiで遊んでみる その4 DB連携

まず、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\" >";
}
?>

おいおい、割と簡単にできたけど、こんなんでいいのか?