こんにちは、Kredo Blog編集部です!
Kredoは、PHP・Laravelを使うWebシステム開発や保守運用に取り組んでいます。IT・AI開発実績もご覧ください。
PHPは処理を書く言語、MySQLはデータを保存・検索するデータベース管理システムです。両者を組み合わせると、投稿一覧や予約記録など、更新される情報を扱うWebアプリを作れます。この記事では役割の違い、接続の準備、基本操作、安全に使うための確認を解説します。
PHPとは?

PHPはサーバー側で動き、ブラウザから受け取った要求に応じて処理を実行します。見た目のデザインを担当するCSSとは役割が異なり、データの読み書きや入力の検証、HTMLやJSONの生成などに使います。
たとえば記事一覧では、PHPがMySQLに「公開中の記事を新しい順で取得したい」と問い合わせ、取得した結果からページを生成します。利用者のブラウザがMySQLへ直接つながる構成にはしません。PHP側で認証・権限・入力を確認して、必要なデータだけを返します。
PHPだけで動く処理もあるため、学習の最初からDBが必須とは限りません。基本文法とフォームの流れを理解してから、保存機能を追加すると学ぶ範囲を分けられます。PHPの基礎と構文も参考にしてください。
MySQLとは?

MySQLは、表のような形でデータを管理するリレーショナルデータベース管理システムです。列に項目、行に1件分のデータを持ち、SQLという言語で検索・追加・更新・削除します。PHPとMySQLは別のソフトウェアなので、起動状況や版もそれぞれ確認します。
| 用語 | 意味 | 記事管理の例 |
|---|---|---|
| データベース | 関連するテーブルなどをまとめる単位 | ブログ用のデータをまとめる。 |
| テーブル | 同じ構造のデータを並べる表 | 記事、著者、カテゴリーを分ける。 |
| 主キー | 行を識別するためのキー | 記事IDを重複させずに管理する。 |
| DBユーザー | 接続と操作の権限を与えるアカウント | アプリに必要な操作だけを許可する。 |
ダウンロードサイトの会員登録と、データベースへ接続するユーザーは別です。接続には、用意したMySQLの接続先・ポート・DB名・DBユーザーと、その権限が必要です。学習はローカル環境とダミーデータで始めます。MySQL公式ドキュメントで使用する系列の説明を確認できます。
MySQLでできること

MySQLではデータを条件で絞り、並べ替え、集計し、必要な行を更新できます。WordPressでもデータベースが使われますが、画像ファイルそのものと記事・設定のデータがすべて同じ場所に保存されるわけではありません。バックアップではファイルとDBを分けて把握します。
| 操作 | SQL | 学習時に確認すること |
|---|---|---|
| 追加 | INSERT | 必須項目、重複、文字コード。 |
| 取得 | SELECT | 必要な列だけを返し、条件・件数・並び順を指定する。 |
| 更新 | UPDATE | WHERE条件で対象を限定し、更新件数を確認する。 |
| 削除 | DELETE | 対象を先に確認する。実データで練習しない。 |
データが増えても無条件に高速なわけではありません。検索条件、インデックス、接続数、サーバーの資源によって性能は変わります。まず正しい結果を返すSQLを作り、遅い処理を測ってから改善しましょう。複数の更新をひとまとめに扱う必要がある処理では、トランザクションも学びます。
PHPを使ったMySQLの運用について

PHPからMySQLへ接続する方法の1つがPDOです。PDO本体に加え、MySQL用のドライバーが必要です。PHP公式のPDO説明を参照し、利用するPHPで拡張が有効かを確認してください。
接続前にそろえる情報
- DBサーバーの接続先とポート、使用するデータベース名。
- アプリ専用のDBユーザーと必要最小限の権限。
- 接続情報を安全に読み込む仕組み。公開リポジトリへ実パスワードを書かない。
- 文字コード、接続タイムアウト、エラー記録の方法。
最初は読み取りから試す
接続が確認できたら、ダミーのテーブルを作り、SELECTで必要な行を取得します。次に追加・更新・削除を1つずつ試します。更新前には同じ条件で対象を読み取り、意図した行だけが変わるか確認してください。
// $pdo は設定から接続済みのPDOオブジェクト
$stmt = $pdo->prepare('SELECT id, title FROM articles WHERE id = :id');
$stmt->execute(['id' => 1]);
$article = $stmt->fetch(PDO::FETCH_ASSOC);
この断片だけではDBへ接続しません。接続設定とarticlesテーブルを用意したうえで、IDが存在する場合・存在しない場合を確認します。SQLに値を直接つなげず、パラメーターで渡す考え方を先に覚えましょう。接続情報を使わず試せるSQLiteのコード例でも基本を確認できます。
接続できないときはエラーを分類する
| エラーの種類 | 確認の方向 |
|---|---|
| could not find driver | そのPHPでpdo_mysqlなど必要な拡張が有効か。 |
| Connection refused | DBが起動しているか、接続先とポートが正しいか。 |
| Access denied | DBユーザー、パスワード、接続元の許可、権限が正しいか。 |
| Unknown database / table | DB名・テーブル名、作成した環境、マイグレーションの実行状況。 |
エラーが出たからといってPHPやMySQLを入れ直す前に、どこまで接続できたかを確かめます。エラー詳細は管理用ログで確認し、利用者の画面へ接続情報をそのまま表示しないでください。
PHPとMySQLを連携するときのセキュリティ対策
フォームなどから受け取った値をSQLへ直接つなげると、SQLインジェクションにつながるおそれがあります。値を埋め込む場合は、PDOなどのプリペアドステートメントでパラメーターとして渡します。PHP公式の説明も確認してください。
パラメーターにできるのは値です。テーブル名・列名・並び順などを利用者が選ぶ場合は、あらかじめ許可した候補に限定します。実装の例はPHPの安全なコード例で紹介しています。
SQLの対策だけで、PHP本体の脆弱性は修正されません。PHP本体の修正版と対応手順も確認してください。これから試す方はPHPの開発環境の準備から始められます。
PHPやMySQLをもっと学びたい人に向けた教材3選
最後に、MySQLについてもっと深く学びたいという人に向けて、いくつか学習教材をご紹介しておきます。
基礎からのMySQL(ソフトバンククリエイティブ)

その名の通り、MySQLの基礎を簡潔かつしっかりと抑えた教本です。
深く掘り下げていない分、初めてMySQLを触る人には読みやすく、とりあえず知識を身につけて実践に臨みたい人には嬉しい一冊です。
初めてのPHP & MySQL 第2版(オライリージャパン)

プログラミング教本でおなじみのオライリーが出版している教材です。
MySQLの知識だけでなく、PHPを活用してどう実践に生かすかの手法が書かれているため、手元にいつも置いておきたい一冊になっています。
現場で使える MySQL (翔泳社)

単なる知識にとどまらず、実戦で活用できる実用的なスキルを身に付けたい人は、こちらの本がおすすめです。
現場で役立つノウハウを深く自習するために編集されているので、独学エンジニアを目指す人にはぴったりの一冊です。
書籍には刊行時のMySQL・PHPの仕様が載っています。旧版を使うときは、認証方式や廃止された機能、接続例を現在の公式ドキュメントと照合してください。PHPの入門書選びはPHPの本8選、実行環境の準備はPHP開発環境の手順が参考になります。
まとめ:PHPの処理とMySQLの保存を分けて理解しよう

PHPはアプリの処理、MySQLは保存・検索という役割を持ちます。言語とデータベースを区別し、接続先・権限・SQL・入力の検証を順に確かめましょう。学習ではダミーデータで小さく試し、結果と失敗時のエラーを記録すると理解が進みます。
運営中のサイトでは、コードの対策に加えてPHP本体、MySQL、利用ライブラリの修正も必要です。PHP脆弱性の確認と対応手順もあわせて確認してください。
英語でIT・AIを学べるKredo
英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?
当メディアを運営しているKredoは、英語×ITをオンラインで学ぶ「Kredoオンラインキャンプ」と、フィリピンのセブ島で英語とIT・AIを学ぶ「KredoIT留学」「KredoAI留学」を提供しています。これまでの卒業生は3,000名以上。卒業生の多くが、国内外のIT企業への転職、フリーランスなどへのキャリアチェンジを実現しています。これからの時代に必要な英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?











