- ベストアンサー
PHPとSQLでアクセスカウンタとリンクを作る方法
- mySQLとphpを使ってアクセスカウンタを作る方法を知りたい。
- 自分で試したがうまくいかないため、模範回答が知りたい。
- データベースにアクセスして特定のデータを抽出する方法がわからない。
- みんなの回答 (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(); } ?> こんな感じですかね。
お礼
大変ご丁寧なご回答、本当にありがとうございます。 まだ学習途中ですが、このプログラムをもとにより一層の昇進を続けたいと思います。 ありがとうございました。参考にさせていただきます。