😸
PHPからMySQLを操作する
こんにちは、nekoです!
PHPからMySQLを操作する方法を学習しました。知識の整理と定着のため学習内容のまとめをしていきたいと思います。
MySQLに接続する
mysqli_connect('ホスト名', 'ユーザー名', 'パスワード', 'データベース名');
// 読書ログでMySQLに接続するなら
mysqli_connect('db', 'book_log', 'pass', 'book_log');
接続されなかったときの対策
もしデータベースに接続されていないまま処理が実行されることを防ぐために対策をしておきます。
/*
* MySQLに接続する。
* 接続に失敗してFALSEが帰ってきた場合は、それを$linkに代入する
*/
$link = mysqli_connect('db', 'book_log', 'pass', 'book_log');
/*
* $linkにFALSEが入っていたらTRUE
*/
if (!$link) {
echo 'Error: データベースに接続できません' . PHP_EOL;
echo 'Debugging error: ' . mysqli_connect_error() . PHP_EOL;
exit;
}
-
mysqli_connect()
:接続に失敗した場合にFALSEを返します。 -
!
:真偽値を反転させます。 -
mysqli_connect_error()
:エラー情報が表示されます。
MySQLとの接続を切断する
mysqli_close($link)
-
$link
:mysqli_connect()が返すID
データを登録する
INSERT
MySQLにデータを登録するにはINSERT文を使います。
INSERT INTO <テーブル名> (列1, 列2, ...) VALUES (値1, 値2, ...);
きちんと登録ができたかどうかは後述するSELECT文を使って確認をすることができます。
PHPからMySQLにデータを登録する
mysqli_query($link, $query)
- INSERT文を使うとテーブルに1行のデータを挿入することができます。
-
$link
:mysqli_connect()が返すリンクID -
$query
:SQL文の文字列
使い方
$link = mysqli_connect('db', 'book_log', 'pass', 'book_log');
$sql = "INSERT INTO companies (name) VALUES ('SmartHR inc')";
mysqli_query($link, $sql);
エラーへの対策
エラーが発生した場合の対策も記述しておきます。
$link = mysqli_connect('db', 'book_log', 'pass', 'book_log');
$sql = "INSERT INTO companies (name) VALUES ('SmartHR inc')";
$result = mysqli_query($link, $sql);
if ($result) {
echo 'データを追加しました' . PHP_EOL:
} else {
echo 'Error: データの追加に失敗しました' . PHP_EOL;
echo 'Debugging Error: ' .mysqli_error($link) . PHP_EOL;
}
複数行にまたがる文字を表記するときは
ヒアドキュメントを使うと見やすくなります。
$sql = <<<EOT # <<<ID
INSERT INTO companies (
name
) VALUES (
'SmartHR inc'
)
EOT; # ID ※インデントしてはいけない
$link = mysqli_connect('db', 'book_log', 'pass', 'book_log');
mysqli_query($link, $sql);
データを取得する
SELECT
データを取得するにはSELECT文を使います。
SELECT <列名>, ...
FROM <テーブル名>;
SELECT name, founder
FROM companies;
PHPからMySQLのデータを取得する
$link = mysqli_connect('db', 'book_log', 'pass', 'book_log'); // DBに接続する
$sql = 'SELECT name, founder FROM companies';
$results = mysqli_query($link, $sql); // SQL文を実行
while ($company = mysqli_fetch_assoc($results)) {
echo '会社名:' . $company['name'] . PHP_EOL;
echo '代表者:' . $company['founder'] . PHP_EOL;
}
mysqli_free_result($results); // メモリを開放する
mysqli_query
データベース上でクエリを実行します。成功したらmysqli_resultオブジェクトを返します。
mysqli_query($link, $query)
mysqli_fetch_assoc
結果の行を連想配列で取得します。$result
はmyqli_resultオブジェクト
です。
mysqli_fetch_assoc($result)
mysqli_free_result
結果に関連付けられたメモリを開放します。$result
はmyqli_resultオブジェクト
です。
mysqli_free_result($result)
Discussion