もくじ
- MySQL接続関数 mysqli_connect(弟1引数, 第2引数, 第3引数)
- データベース領域選択関数 mysqli_select_db(弟1引数, 第2引数)
- MySQL利用時の文字コードを指定する関数 mysqli_set_charset(弟1引数, 第2引数)
- MySQLへ接続するため処理を関数化
- SQL文を実行して、データべースからレコードを取得する関数 mysqli_query(弟1引数, 第2引数)
- 直前で取得したレコード(リソース)の件数を取得する関数 mysqli_affected_rows()
- データベースから取得したレコードを連想配列に変換する関数 mysqli_fetch_assoc()
- 全角・半角を変換する関数 mb_convert_kana()
- SQL文中で意味をもつ「'」や「"」の特殊文字のエスケープする関数 mysqli_real_escape_string()
- SQL文で変数を使うための関数 sprintf()
- エスケープ処理関数を配列内の各部屋も対象になるように関数化 htmlspecialchars()
- デバッグ処理を関数化
PHPでmysqliを使ってデータベース(MySQL/MariaDB)に接続するときによく使う関数をまとめました。
実務でもよく使用するためコピペで使用できるようにしてます。
MySQL接続関数 mysqli_connect(弟1引数, 第2引数, 第3引数)
- 第1引数
- MySQLサーバーのホスト名
- 弟2引数
- MySQLサーバーのユーザー名
- 弟3引数
- MySQLサーバーに接続するユーザーのパスワード
- 返り値
- MySQLとの接続に成功すると、mysqliクラス(MySQLとの接続情報を管理するオブジェクト)のアドレスを返します。
PHP
Copy
-
mysqli_connect('ホスト名', 'ユーザ名', 'パスワード');
mysqli_connect関数はアドレスを返すため「$dbobj」変数で管理します。
下記のコードでMySQLに接続出来かった場合、die関数で処理を終了して引数の「データベースに接続出来ませんでした」をいうエラーメッセージを表示します。
PHP
Copy
-
$dbobj = mysqli_connect('ホスト名', 'ユーザ名', 'パスワード') or die('データベースに接続出来ませんでした');
データベース領域選択関数 mysqli_select_db(弟1引数, 第2引数)
- 第1引数
- 接続情報
- 弟2引数
- データベース名
- 型
- bool
- 返り値
- true or false
PHP
Copy
-
mysqli_select_db(接続情報, 'データベース名');
PHP
Copy
mysqli_select_db($dbobj, 'データベース名');
MySQL利用時の文字コードを指定する関数 mysqli_set_charset(弟1引数, 第2引数)
- 第1引数
- 接続情報
- 弟2引数
- 文字コード
- 型
- bool
- 返り値
- true or false
PHP
Copy
-
mysqli_set_charset(接続情報, '文字コード');
PHP
Copy
mysqli_set_charset($dbobj, 'utf8');
MySQLへ接続するため処理を関数化
PHP
Copy
function connect() {
$dbobj = mysqli_connect('ホスト名', 'ユーザ名', 'パスワード') or die('DBに接続出来ませんでした');
mysqli_select_db($dbobj, 'データベース名');
mysqli_set_charset($dbobj, 'utf8');
return $dbobj;
}
SQL文を実行して、データべースからレコードを取得する関数 mysqli_query(弟1引数, 第2引数)
- 第1引数
- 接続情報
- 弟2引数
- SQL文
- 型
- mixed
- 返り値
- true or false or SERECT, SHOWなどが成功した場合はオブジェクトを返す。
PHP
Copy
mysqli_query(接続情報, 'SQL文');
PHP
Copy
$resultSet = mysqli_query($dbobj, 'SELECT * FROM テーブル名') or die(mysqli_error($dbobj));
直前で取得したレコード(リソース)の件数を取得する関数 mysqli_affected_rows()
- 引数
- 接続情報
- 型
- int
- 返り値
- 成功した場合は行数を、失敗した場合は-1を返す。
PHP
Copy
mysqli_affected_rows(接続情報);
PHP
Copy
mysqli_affected_rows($dbobj);
データベースから取得したレコードを連想配列に変換する関数 mysqli_fetch_assoc()
- 引数
- mysqli_result リソース
- 型
- array
- 返り値
- 引数にリソースを保存した変数を指定すると、ポインタがある位置のレコードを連想配列で返し、ポインタを次の行へ移動します。
フィールド名が連想配列のキーになってます。
PHP
Copy
mysqli_fetch_assoc(mysqli_result リソース);
PHP
Copy
$data = mysqli_fetch_assoc($resultSet);
while文を利用してすべてのレコードを表示する
「$data = mysqli_fetch_assoc($resultSet);」をwhile文の前で使用するとポインタが1つ進んでいる状態から、while文を実行することになるので2行目のレコードから開始すことになるので注意してください。
PHP
Copy
while($data = mysqli_fetch_assoc($resultSet)) {
echo $data['フィールド名1'];
echo $data['フィールド名2'];
echo $data['フィールド名X'];
echo '<br>';
}
全角・半角を変換する関数 mb_convert_kana()
オプション | 説明 |
---|---|
r | 「全角」英字を「半角」に変換 |
R | 「半角」英字を「全角」に変換 |
n | 「全角」数字を「半角」に変換 |
N | 「半角」数字を「全角」に変換 |
a | 「全角」英数字を「半角」に変換 |
A | 「半角」英数字を「全角」に変換 |
s | 「全角」スペースを「半角」に変換 |
S | 「半角」スペースを「全角」に変換 |
k | 「全角カタカナ」を「半角カタカナ」に変換 |
K | 「半角カタカナ」を「全角カタカナ」に変換 |
h | 「全角ひらがな」を「半角カタカナ」に変換 |
H | 「半角カタカナ」を「全角ひらがな」に変換 |
c | 「全角カタカナ」を「全角ひらがな」に変換 |
C | 「全角ひらがな」を「全角カタカナ」に変換 |
V | 濁点つきの文字を1文字に変換(「K]や「H」と合わせて使用) |
日本語のみに使える関数で、エンコードを指定しない場合、内部文字のエンコードを使用します。
PHP
Copy
mb_convert_kana(string 変換文字列[,string オプション[,string エンコード]]);
PHP
Copy
$char = mb_convert_kana($char, 'ns');
SQL文中で意味をもつ「'」や「"」の特殊文字のエスケープする関数 mysqli_real_escape_string()
PHP
Copy
mysqli_real_escape_string(接続情報, string エスケープを行いたい文字列);
PHP
Copy
$char = mysqli_real_escape_string($dbobj, $char);
SQL文で変数を使うための関数 sprintf()
変換指定子 | 説明 |
---|---|
%s | 文字列として扱う |
%d | 10進数の整数として扱う |
PHP
Copy
sprintf(string 変換指定子を含む文字列
[,mixed 変換指定子に当てはめる値
[,mixed 変換指定子に当てはめる値
[,...]]]);
PHP
Copy
$sql = sprintf('INSERT INTO dbname SET
id=%d, item="%s"',
$id, $item);
エスケープ処理関数を配列内の各部屋も対象になるように関数化 htmlspecialchars()
PHP
Copy
function h($var) {
if (is_array($var)) {
return array_map('h', $var);
} else {
return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
}
}
デバッグ処理を関数化
PHP
Copy
function v($val) {
echo '<pre>';
echo var_dump($val);
echo '</pre>';
}
未経験からWebエンジニアやフロントエンドエンジニアを目指したいという方におすすめの1冊
リンク
Webのセキュリティ対策を学びたいという方におすすめの1冊
リンク
もみじ
私もこの本でウェブセキュリティについて学びましたが、Webエンジニアとして最低限おさえておきたいセキュリティ対策を体系的に学ぶことができます。
初級者には難しい内容ですが、Web開発エンジニアを目指している方は手元に置いておきたい1冊です。
もみじ
ECサイトを作成しながらPHPを学んでいくというのがこの本の特徴です。
既に完成済みのコードがありますが、実際にコーディングしながら読み進めていくことで、実務で使用するスキルを学ぶことができます。