0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPでMySQLのデータ操作その2

Last updated at Posted at 2020-07-01

PHPでMySQLのデータ操作その2

PHPでMySQLを操作する方法を備忘録も兼ねてまとめました。
今回は検索編。
前回から引き続きまずこのようなデータがあるとします。

id name age position
選手id 選手名 選手の年齢 選手のポジション
.sql
-- futsal_teamというデータベース(がなければ)作成。IF NOT EXISTSで判断。
CREATE DATABASE IF NOT EXISTS futsal_team DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-- GRANT文で権限をユーザーに付与、ユーザーはfutsal_team内の全てのテーブルを操作できる。
GRANT ALL PRIVILEGES ON *.* TO 'bs_user'@'localhost' IDENTIFIED BY 'futsal_team';
FLUSH PRIVILEGES;
-- データベースfutsal_team使用。
USE futsal_team;
.sql
-- テーブル作成後、カラム設定。
CREATE TABLE futsal_a (
id integer AUTO_INCREMENT NOT NULL,
name varchar(255) NOT NULL,
age integer NOT NULL,
position varchar(255) NOT NULL,
PRIMARY KEY (id)
);
.sql
-- カラムにそれぞれ値を入れてレコードを作成。idはシーケンス番号がauto_incrementオプションの効果で自動で追加される。
INSERT INTO futsal_a VALUES (null, '加藤A太郎', 25, 'ピヴォ');
INSERT INTO futsal_a VALUES (null, '佐藤B次郎', 27, 'アラ');
INSERT INTO futsal_a VALUES (null, '田中C三郎', 32, 'アラ');
INSERT INTO futsal_a VALUES (null, '山本D五郎', 38, 'フィクソ');
INSERT INTO futsal_a VALUES (null, '中島E十郎', 30, 'ゴレイロ);

データの検索

.php
<?php require './header.php'?>
<form action="container_db_manipulate_search.php" method="post">
  <input type="text" name="search_word">
  <input type="submit" value="メンバー検索">
</form>
<?php
//今回は外部で$user, $passwordを設定してrequireで呼び出している。
require './ft_person.php';
//例外処理のためにtry carch文使用。
try {

  echo '<h1>','Aチームメンバー','</h1>';
  echo '<table>';
    echo '<tbody>';
      //データベースにアクセスするためにPDOクラスのインスタンスをnew演算子で作成する。
      $ft_team=new PDO('mysql:host=localhost;dbname=futsal_team;charset=utf8',
                  $user, $password);
      //もしも名前を検索して、つまり検索ボックスに入力があって条件が一致したら
      if(isset($_REQUEST['search_word'])){
        //prepareメソッドを使って、条件を設定。
        $search=$ft_team->prepare('SELECT * FROM futsal_a WHERE name LIKE ?');
        /*
        executeメソッドで、設定条件の?部分に値を当てはめて実行する。
        この場合は当てはめるものが検索ボックスに入力した名前、結果↓
        「SELECT * FROM futsal_a WHERE name LIKE 入力キーワード」
        ということになる。
        */
        $search->execute(array('%'.$_REQUEST['search_word'].'%'));
      }
      /*
      foreachとeachで「SELECT * FROM futsal_a WHERE name LIKE 入力キーワード」に当てはまるデータ一覧出力。
      検索ボタンだけ押すとデータが一覧表示される。
      */
      foreach ($search as $person) {
        echo '<tr>';
          echo '<td>','番号:',$person['id'],'、','</td>';
          echo '<td>','名前:',$person['name'],'、','</td>';
          echo '<td>','年齢:',$person['age'],'歳','、','</td>';
          echo '<td>','ポジション:',$person['position'],'</td>';
        echo '</tr>';
      }
    echo '<tbody>';
  echo '</table>';

} catch(PDOException $e){

  echo $e->getMessage();
  exit;

}
?>
<?php require './footer.php'?>

PDOというクラスをインスタンス化することで、PHPでデータベースに接続しSQL文で操作ができるようになります。
今回はPDOクラスのメソッドのprepareとexecuteを使用して検索機能を実現しています。
おそらくセットで覚えたほうがいいと思います。
prepareで条件を指定し、その条件の中で?に指定した値を、executeで当てはめて実行します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?