ここから本文です

こちらで作っていただいたPHPを自分なりに改良してみたのですが、 GETで送られるU...

アバター

ID非公開さん

2019/3/1920:47:49

こちらで作っていただいたPHPを自分なりに改良してみたのですが、
GETで送られるURLをexample.comからaaa.comなどの別のものに変更しても既存のレコードが上書きされてしまいます。

追加されるようにするにはどうすればよいのでしょうか。

<?php

$name ='http://api.b.st-hatena.com/entry.count?url=http://'. $_GET['name'].'/';

$now = date('YmdHis');
$expire = date('YmdHis', strtotime('+365days'));

$dbready = file_exists('data.sqlite');

try {
$pdo = new PDO('sqlite: data.sqlite');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// テーブル作成
if (!$dbready) {
$sql = 'drop table if exists contents';
$pdo->exec($sql);
$sql = 'create table contents (
url text primary key,
contents text,
upddate text,
expire text
)';
$pdo->exec($sql);
}
// 既存データ確認
$stmt = $pdo->prepare('select * from contents where url=?');
$stmt->execute([$name]);
$row = $stmt->fetch();
if (($row === false)or($row['expire'] < $now)) {
if ($row === false) {
$stmt = $pdo->prepare('insert into contents (contents, upddate, expire, url) values (?, ?, ?, ?)');

} else {
$stmt = $pdo->prepare('update contents set contents=?, upddate=?, expire=? where url=?');
}
$res = @file_get_contents($name);
if ($res !== false) {
$stmt->execute([$res, $now, $expire, $name]);
} else {
echo 'はてぶ数の取得に失敗しました';
}
} else {
$res = $row['contents'];
}
} catch (PDOException $e) {
error_log($e->getMessage());
die('DB error');
}

?>

閲覧数:
30
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

2019/3/2008:27:53

あー・・失礼!

× $pdo = new PDO('sqlite: data.sqlite');

〇 $pdo = new PDO('sqlite:data.sqlite');

ですね。余計な空白が混じってしまいました(汗

file_existsで確認したファイルと作成するDBファイルが違っているので毎回初期化されてしまう・・・

アバター

質問した人からのコメント

2019/3/25 02:38:24

原因がわかりました。
ありがとうございました。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる