mySQLとphpで、アクセスカウンタの作成を練習しています。
データベース名:animal、テーブル名:pet、フィールド名が順にID:url:scoreで
1:neko.com:43
2:inu.com:24
3:bird.com:62
…
というデータがあります。
たとえばhttp://test.com/test.php?id=2というリンクを踏んだ場合、inu.comへ転送させ、さらに24の数字は25になります。
自分でもhttp://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=URL%B0 …
これを利用してidを得たあとmySQLにアクセスしてデータを探そうとしたのですが、手元の「よくわかるphpの教科書」には指定したデータの抽出方法は見つかりませんでした。
今日一日調べながらがんばってみましたが、いろいろ工夫してもどうもうまくできません。
どなたか、これらの処理を行うphpの模範回答をご教示いただけないでしょうか。
どうかよろしくお願いします。
No.1ベストアンサー
- 回答日時:
<?php
if(!isset($_GET['id']) || !preg_match('/^[0-9]+$/', $_GET['id'])){
//GETパラメータにIDがないか、
//数字以外のものが入ってるので終了
exit();
}
//DB設定
define('MY_DB_DSN', 'mysql:dbname=your_db_name;host=your-host-name');
define('MY_DB_USER', 'username');
define('MY_DB_PASS', 'password');
$id = $_GET['id'];
try{
$pdo = new PDO(MY_DB_DSN, MY_DB_USER, MY_DB_PASS); //PDOでデータベースアクセス
//PDOを設定
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//IDを探す
//プリペアドステートメントの作成
$stmt = $pdo->prepare("SELECT * FROM animal WHERE id=?");
if(!$stmt->execute(array($id))){
//失敗したので終了
exit();
}
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if(!empty($row)){
//遷移先URLを取得して
$url = $row['url'];
//カウンタを回す
$stmt = $pdo->prepare("UPDATE animal SET score=score+1 WHERE id=?");
$stmt->execute(array($id));
//準備終わったのでリダイレクト
header("Location: {$url}");
exit();
}
}catch(Exception $e){
//例外エラーが出てきたので終了
//エラー内容みたかったら
//echo $e;
//上をコメントアウト
exit();
}
?>
こんな感じですかね。
大変ご丁寧なご回答、本当にありがとうございます。
まだ学習途中ですが、このプログラムをもとにより一層の昇進を続けたいと思います。
ありがとうございました。参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- PHP PHP ページング データベース 1 2022/06/16 10:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP 10件表示 "前へ" "次へ"
-
dbに登録したデータをphpのプル...
-
PHPで[]の使い方について
-
エクセルVBAについて
-
printfの表示結果の配置がうま...
-
テーブル内の文字によりログイ...
-
SELECT結果から動的にコンボボ...
-
PHP 勤務時間の合計を出したい
-
phpのif文について
-
日付範囲で検索した後に降順に...
-
PHPでMY SQLの連想配列をリンク...
-
mysql_fetch_assoc()の非推奨
-
エラーの原因と改善策を教えて...
-
phpのParse errorについて
-
DBのデータを表示させたい
-
チェックボックスでチェックし...
-
PHP + MySQLを使用して詳細画面...
-
MySQLでデータベースにデータin...
-
VBAをつかってクエリの情報を抽...
-
JAVA SQLServerException 列名 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
php テーブルが作成できない
-
dbに登録したデータをphpのプル...
-
phpでmysqlを使ってデータベー...
-
アラートでyes noを作りたいです。
-
DBで検索結果に該当するデータ...
-
checkboxクリック時、SQLを実行...
-
文字化けが解決できません。お...
-
SELECT結果から動的にコンボボ...
-
PHPでMySQLデータを呼び出し、w...
-
while文の中にwhile文を書きた...
-
sortable ギブアップです…助け...
-
PHP と MySQL でテーブルの行数...
-
重複レコードをグループ化した...
-
PHPでMySQLのデータを2次元配...
-
mysql>PHPにデータ表示、10件ご...
-
PHPについてなのですが未定義の...
-
VBA初心者です。
-
ラジオボタンをループすること...
-
BLOBでの画像表示について
おすすめ情報