PDOによるテーブルやデータの操作
基本的な操作
すぐ忘れちゃうので書いておく。
<?php /** * PDOによる * 「テーブルの作成」 * 「データの挿入」 * 「データの取得」 * 「データの削除」 * 「データの取得」 * 「テーブルの削除」 * http://php.net/manual/ja/book.pdo.php */ /** * PDOでMySQLに接続するためのパラメータ */ $dsn = 'mysql:dbname=projects;host=localhost'; $user = 'admin'; $password = 'pass'; /** * MySQLに接続 */ try{ $dbh = new PDO($dsn, $user, $password); print('接続に成功しました。<br>'); }catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } /** * テーブルの作成 */ $stmt = $dbh->query("CREATE TABLE projects.meibo (id INT,name TEXT)"); /* 結果の取得*/ $results = $stmt->fetchall(); /** * データの挿入 */ $stmt = $dbh->query("INSERT INTO projects.meibo VALUES(1,'名無し1')"); $results = $stmt->fetchall(); /* データの取得 * PDO::FETCH_ASSOC 連想配列で返すフラグみたいなもの */ $stmt = $dbh->query("SELECT * FROM projects.meibo"); $results = $stmt->fetchall(PDO::FETCH_ASSOC); echo '<br />データ挿入後<br />'; var_dump($results); /** * データの削除 */ $stmt = $dbh->query("DELETE FROM projects.meibo WHERE id = 1"); $results = $stmt->fetchall(PDO::FETCH_ASSOC); echo '<br />データ削除後<br />'; var_dump($results); /** * デーブルの削除 */ $stmt = $dbh->query("DROP TABLE projects.meibo"); $results = $stmt->fetchall();
strposによる検索
具体例
<?php /** * http://php.net/manual/ja/function.strpos.php * (PHP 4, PHP 5, PHP 7) * strpos — 文字列内の部分文字列が最初に現れる場所を見つける */ /** * 次の例は検索がひっかかるパターン */ // 検索対象文字列 $text = '文字列の検索'; // 検索文字列 $retrieval = '列'; // $pos = strpos($text,$retrieval); // if($pos !== false) { echo '検索一致'; } else { echo '検索不一致'; }
数値データかどうかのチェック
モチベーション
AWKの場合
プログラム
BEGIN{ FS = ',' } /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][+-]?[0-9]+)?$/{ print $0; } END{ }
- BEGIN内では、フィールドセパレータ(FS)をカンマに設定している。
概略
- 「^」:最初にマッチ
- 「$」:最後にマッチ
- 「[+-]?」:+もしくは-が付いても付かなくても構わない。
- 最初の小かっこ内は、仮数部に引っかかるようなパターンである。
- 次の小かっこ内は、指数部に引っかかるようなパターンである。ただし、カッコ後に「?」が付いているので、指数部はあってもなくても構わない。
仮数部
- [0-9]+で1コ以上の数値の並び。
- 「[.]?」で小数点があってもなくても構わない。
- [0-9]*でその後の数字が0コ以上。
- 「|」は、または、の意。整数部が0の場合省略可能。
指数部
- 指数部は「[eE]」で表記。プログラムによってはDとかでも出力されるので、[eED]としておけば、「e」もしくは「E」もしくは「D」で引っかかるようにできる。
- 「[+-]?」は指数部のプラスマイナスにマッチする。あってもなくても良い
- 「[0-9]+」は「1.0E-10」の「10」なんかに引っかかる。「+」が付いているので、1コ以上の数字が必要。
- 最後の「?」は、指数部全体にかかるので指数部はあってもなくても構わない。
この表現はPerlでも使える。
- 作者: A.V.エイホ,P.J.ワインバーガー,B.W.カーニハン,足立高徳
- 出版社/メーカー: USP研究所
- 発売日: 2010/01/01
- メディア: 単行本(ソフトカバー)
- クリック: 1回
- この商品を含むブログを見る
表組みのCSSメモ
表組みとCSS
HTML
htmlファイルは次のとおり、linkはCSSファイルのパスを書いておく。
talbleのクラスはCSSファイルを参照。
<!DOCTYPE html> <html> <head> <title>表組み</title> <link rel="stylesheet" href="./css/style.css"> </head> <body> <table class="sample"> <tr> <th>th1</th> <th>th2</th> <th>th3</th> <th>th4</th> </tr> <tr> <td>td1</td> <td>td2</td> <td>td3</td> <td>td4</td> </tr> <tr> <td>td1</td> <td>td2</td> <td>td3</td> <td>td4</td> </tr> <tr> <td>td1</td> <td>td2</td> <td>td3</td> <td>td4</td> </tr> <tr> <td>td1</td> <td>td2</td> <td>td3</td> <td>td4</td> </tr> </table> </body> </html>
CSS
CSSファイルは次のとおり。
コメントは/**/ で行う。
table, th, td { border-collapse: collapse; border: 1px solid #ccc; line-height: 1.5; } /* sampleはhtml側でclassとして指定する*/ table.sample th { width: 150px; padding: 10px; font-weight: bold; vertical-align: top; background: #3f3f3f; color: #ffffff; } table.sample td { width: 350px; padding: 10px; vertical-align: top; } /* 偶数と奇数で切り替える */ tr:nth-child(even) { background: #d9d9d9; }
セッション
ページをまたいでデータを保持する
- PHPにおいてページをまたいでデータを引き継ぎたいときは、セッションを使う。
a1.phpのコード(遷移元)
- これを最初のページ(遷移元)にする。
- ただし、phpコードの最初に記述すること。途中からsession_startすると、データが失われる。
- 配列aaa1のデータを設定し、$_SESSION[['a1']に保存している。
<?php session_start(); $aaa1 = [1000,1001,1002]; $_SESSION['a1'] = $aaa1; echo '配列$aのデータ@a1.php<br/>'; foreach ($aaa1 as $a1) { echo $a1.'<br />'; } echo '<a href="./a2.php">別ページに遷移</a>';