プログラミング

【PR】

【PHP】mysqliを使ってデータベース(MySQL・MariaDB)接続時によく使う関数まとめ

PHP mysqli:データベース接続時によく使う関数まとめ

PHPでmysqliを使ってデータベース(MySQL/MariaDB)に接続するときによく使う関数をまとめました。

実務でもよく使用するためコピペで使用できるようにしてます。

MySQL接続関数 mysqli_connect(弟1引数, 第2引数, 第3引数)

第1引数
MySQLサーバーのホスト名
弟2引数
MySQLサーバーのユーザー名
弟3引数
MySQLサーバーに接続するユーザーのパスワード
返り値
MySQLとの接続に成功すると、mysqliクラス(MySQLとの接続情報を管理するオブジェクト)のアドレスを返します。
PHP
Copy
  1. mysqli_connect('ホスト名', 'ユーザ名', 'パスワード');

mysqli_connect関数はアドレスを返すため「$dbobj」変数で管理します。

下記のコードでMySQLに接続出来かった場合、die関数で処理を終了して引数の「データベースに接続出来ませんでした」をいうエラーメッセージを表示します。

PHP
Copy
  1. $dbobj = mysqli_connect('ホスト名', 'ユーザ名', 'パスワード') or die('データベースに接続出来ませんでした');

データベース領域選択関数 mysqli_select_db(弟1引数, 第2引数)

第1引数
接続情報
弟2引数
データベース名
bool
返り値
true or false
PHP
Copy
  1. mysqli_select_db(接続情報, 'データベース名');
PHP
Copy
  1. mysqli_select_db($dbobj, 'データベース名');

MySQL利用時の文字コードを指定する関数 mysqli_set_charset(弟1引数, 第2引数)

第1引数
接続情報
弟2引数
文字コード
bool
返り値
true or false
PHP
Copy
  1. mysqli_set_charset(接続情報, '文字コード');
PHP
Copy
  1. mysqli_set_charset($dbobj, 'utf8');

MySQLへ接続するため処理を関数化

PHP
Copy
  1. function connect() {
  2.   $dbobj = mysqli_connect('ホスト名', 'ユーザ名', 'パスワード') or die('DBに接続出来ませんでした');
  3.   mysqli_select_db($dbobj, 'データベース名');
  4.   mysqli_set_charset($dbobj, 'utf8');
  5.   return $dbobj;
  6. }

SQL文を実行して、データべースからレコードを取得する関数 mysqli_query(弟1引数, 第2引数)

第1引数
接続情報
弟2引数
SQL文
mixed
返り値
true or false or SERECT, SHOWなどが成功した場合はオブジェクトを返す。
PHP
Copy
  1. mysqli_query(接続情報, 'SQL文');
PHP
Copy
  1. $resultSet = mysqli_query($dbobj, 'SELECT * FROM テーブル名') or die(mysqli_error($dbobj));

直前で取得したレコード(リソース)の件数を取得する関数 mysqli_affected_rows()

引数
接続情報
int
返り値
成功した場合は行数を、失敗した場合は-1を返す。
PHP
Copy
  1. mysqli_affected_rows(接続情報);
PHP
Copy
  1. mysqli_affected_rows($dbobj);

データベースから取得したレコードを連想配列に変換する関数 mysqli_fetch_assoc()

引数
mysqli_result リソース
array
返り値
引数にリソースを保存した変数を指定すると、ポインタがある位置のレコードを連想配列で返し、ポインタを次の行へ移動します。
フィールド名が連想配列のキーになってます。
PHP
Copy
  1. mysqli_fetch_assoc(mysqli_result リソース);
PHP
Copy
  1. $data = mysqli_fetch_assoc($resultSet);

while文を利用してすべてのレコードを表示する

「$data = mysqli_fetch_assoc($resultSet);」をwhile文の前で使用するとポインタが1つ進んでいる状態から、while文を実行することになるので2行目のレコードから開始すことになるので注意してください。

PHP
Copy
  1. while($data = mysqli_fetch_assoc($resultSet)) {
  2.   echo $data['フィールド名1'];
  3.   echo $data['フィールド名2'];
  4.   echo $data['フィールド名X'];
  5.   echo '<br>';
  6. }

全角・半角を変換する関数 mb_convert_kana()

オプション説明
r「全角」英字を「半角」に変換
R「半角」英字を「全角」に変換
n「全角」数字を「半角」に変換
N「半角」数字を「全角」に変換
a「全角」英数字を「半角」に変換
A「半角」英数字を「全角」に変換
s「全角」スペースを「半角」に変換
S「半角」スペースを「全角」に変換
k「全角カタカナ」を「半角カタカナ」に変換
K「半角カタカナ」を「全角カタカナ」に変換
h「全角ひらがな」を「半角カタカナ」に変換
H「半角カタカナ」を「全角ひらがな」に変換
c「全角カタカナ」を「全角ひらがな」に変換
C「全角ひらがな」を「全角カタカナ」に変換
V濁点つきの文字を1文字に変換(「K]や「H」と合わせて使用)

日本語のみに使える関数で、エンコードを指定しない場合、内部文字のエンコードを使用します。

PHP
Copy
  1. mb_convert_kana(string 変換文字列[,string オプション[,string エンコード]]);
PHP
Copy
  1. $char = mb_convert_kana($char, 'ns');

SQL文中で意味をもつ「'」や「"」の特殊文字のエスケープする関数 mysqli_real_escape_string()

PHP
Copy
  1. mysqli_real_escape_string(接続情報, string エスケープを行いたい文字列);
PHP
Copy
  1. $char = mysqli_real_escape_string($dbobj, $char);

SQL文で変数を使うための関数 sprintf()

変換指定子説明
%s文字列として扱う
%d10進数の整数として扱う
PHP
Copy
  1. sprintf(string 変換指定子を含む文字列
  2. [,mixed 変換指定子に当てはめる値
  3. [,mixed 変換指定子に当てはめる値
  4. [,...]]]);
PHP
Copy
  1. $sql = sprintf('INSERT INTO dbname SET
  2.   id=%d, item="%s"',
  3.   $id, $item);

エスケープ処理関数を配列内の各部屋も対象になるように関数化 htmlspecialchars()

PHP
Copy
  1. function h($var) {
  2.   if (is_array($var)) {
  3.     return array_map('h', $var);
  4.   } else {
  5.     return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
  6.   }
  7. }

デバッグ処理を関数化

PHP
Copy
  1. function v($val) {
  2.   echo '<pre>';
  3.   echo var_dump($val);
  4.   echo '</pre>';
  5. }

未経験からWebエンジニアやフロントエンドエンジニアを目指したいという方におすすめの1冊

アイコン画像

もみじ

ECサイトを作成しながらPHPを学んでいくというのがこの本の特徴です。

既に完成済みのコードがありますが、実際にコーディングしながら読み進めていくことで、実務で使用するスキルを学ぶことができます。

Webのセキュリティ対策を学びたいという方におすすめの1冊

アイコン画像

もみじ

私もこの本でウェブセキュリティについて学びましたが、Webエンジニアとして最低限おさえておきたいセキュリティ対策を体系的に学ぶことができます。

初級者には難しい内容ですが、Web開発エンジニアを目指している方は手元に置いておきたい1冊です。

-プログラミング
-,