レシピ
データベース MySQL / MariaDB
mysqliでMySQL/MariaDBにデータを登録:INSERT
今回はMySQLiとSQLのINSERT文を使って、データベースへデータの登録を行う方法を解説します。
この記事のポイント
- mysqliを使ってMySQL / MariaDBデータベースにデータを登録する
- 具体的なコード例で処理内容が理解できる
目次
データベースへデータを登録する
MySQLiクラスのqueryメソッド、もしくはmysqli_query関数使って、データベースに新しくデータを登録していきます。
テーブルについては「mysqliでテーブルを作成(CREATE TABLE)」で作成したものと同じテーブルを前提にします。
まず、データを登録するためのSQLであるINSERT文の基本的な形を確認しましょう。
オブジェクト型のコード例
INSERT INTO テーブル名 (
カラム1, カラム2, カラム3
) VALUES (
'カラム1の値','カラム2の値','カラム3の値'
);
テーブル名、データを登録するカラム名、値の順にそれぞれ記述します。
値は文字列の場合のみ前後を「‘ (シングルクォーテーション)」で囲む必要があります。
今回のテーブル「gc_granola」の場合に置き換えると、次のようになります。
オブジェクト型のコード例
INSERT INTO gc_granola (
name, price, best_before, modify_datetime, create_datetime
) VALUES (
'グラノーラ', 300, '2019-04-01', '2018-09-20', '2018-09-20'
);
こちらのSQLを元に、「オブジェクトを使った書き方」と「関数を使った書き方」をそれぞれ使ってデータを登録する方法について解説していきます。
また、今回の方法はMySQL、MariaDBのいずれも同じコードで動作します。
なお、データベースへの接続までは「mysqliを使ってMySQL/MariaDBのデータベースへ接続」と同様です。
詳しくはこちらの記事をご覧ください。
オブジェクトを使った書き方
まずは、オブジェクト型で書いた場合のコードです。
オブジェクトを使ったコード例
$mysqli = new mysqli( 'host_name', 'user_name', 'password', 'database_name');
if( $mysqli->connect_errno ) {
echo $mysqli->connect_errno . ' : ' . $mysqli->connect_error;
}
$mysqli->set_charset('utf8');
// 現在の日付を取得
$date = date('Y-m-d H:i:s');
// INSERT
$sql = "INSERT INTO gc_granola (
name, price, best_before, modify_datetime, create_datetime
) VALUES (
'テストグラノーラ', 300, '2016-12-01 00:00:00', '$date', '$date'
)";
$res = $mysqli->query($sql);
var_dump($res);
$mysqli->close();
実行結果
実行前のデータベース
実行後のデータベース
解説
コードを上から順に詳しくみていきましょう。
まず、最初の5行ではデータベースの接続を行います。
もし接続にエラーがあった場合は、if文の中にあるecho関数でエラー番号のconnect_errnoプロパティと、エラー内容のconnect_errorプロパティを出力します。
データベースに接続
$mysqli = new mysqli( 'host_name', 'user_name', 'password', 'database_name');
if( $mysqli->connect_errno ) {
echo $mysqli->connect_errno . ' : ' . $mysqli->connect_error;
}
続いて、set_charsetメソッドを使ってデータベースの文字コードを指定します。
文字コードの設定
$mysqli->set_charset('utf8');
データの更新日、登録日を登録するために、date関数で現在の日時を取得して$dateに入れます。
この値はINSERT文の中で使用します。
現在の日時を取得
// 現在の日付を取得
$date = date('Y-m-d H:i:s');
続いて、SQLを作成して$sqlに入れます。
上記で解説したINSERT文を記述します。
SQLは後述する「関数を使った方法」でも同じものを使用します。
SQLを作成
// INSERT
$sql = "INSERT INTO gc_granola (
name, price, best_before, modify_datetime, create_datetime
) VALUES (
'テストグラノーラ', 300, '2016-12-01 00:00:00', '$date', '$date'
)";
作成したSQLを、queryメソッドで実行します。
今回はINSERT文が実行され、SQLに記述した値が新しく1つデータベースへ追加されます。
SQLを実行
$res = $mysqli->query($sql);
$resにはqueryメソッドの返り値が入り、データの登録に成功したらtrue、失敗した場合はfalseが入ります。
最後に、$resの内容を出力して、データベースとの接続を解除して終了します。
実行結果を出力して終了
var_dump($res);
$mysqli->close();
以上、オブジェクトを使った方法でした。
関数を使った書き方
続いて、mysqli系の関数を使った方法を解説します。
関数を使ったコード例
$db_link = mysqli_connect( 'host_name', 'user_name', 'password', 'database_name');
if( mysqli_connect_errno($db_link) ) {
echo mysqli_connect_errno($db_link) . ' : ' . mysqli_connect_error($db_link);
}
mysqli_set_charset( $db_link, 'utf8');
// 現在の日付を取得
$date = date('Y-m-d H:i:s');
// INSERT
$sql = "INSERT INTO gc_granola (
name, price, best_before, modify_datetime, create_datetime
) VALUES (
'テストグラノーラ', 300, '2016-12-01 00:00:00', '$date', '$date'
)";
$res = mysqli_query( $db_link, $sql);
var_dump($res);
mysqli_close($db_link);
実行結果
実行結果は上記「オブジェクト型」と同様です。
解説
上から順にコードを解説していきます。
最初の5行はデータベースへの接続です。
1行目はmysqli_connect関数を使ってデータベースの接続を行い、接続結果を$db_linkに入れています。
この接続結果はハンドラとして後の処理でも使用します。
3行目〜5行目のif文では、データベース接続にエラーがあった場合にエラー内容が出力されます。
エラー番号をmysqli_connect_errno関数、エラー内容をmysqli_connect_error関数で出力し、エラーの原因を特定するための情報が表示されます。
データベースに接続
$db_link = mysqli_connect( 'host_name', 'user_name', 'password', 'database_name');
if( mysqli_connect_errno($db_link) ) {
echo mysqli_connect_errno($db_link) . ' : ' . mysqli_connect_error($db_link);
}
続いて、mysqli_set_charset関数でデータベースの文字コードを設定します。
第1引数にハンドラ、第2引数に使用する文字コードを指定します。
mysqli系の関数では第1引数にハンドラを渡し、データベースに接続した情報を渡す形になります。
文字コードの設定
mysqli_set_charset( $db_link, 'utf8');
データの更新日、登録日を登録するために、date関数で現在の日時を取得して$dateに入れます。
現在の日時を取得
// 現在の日付を取得
$date = date('Y-m-d H:i:s');
続いて、データを登録するSQLを作成して$sqlに入れます。
SQLの作成
// INSERT
$sql = "INSERT INTO gc_granola (
name, price, best_before, modify_datetime, create_datetime
) VALUES (
'テストグラノーラ', 300, '2016-12-01 00:00:00', '$date', '$date'
)";
mysqli_query関数でSQLを実行してデータを登録します。
SQLを実行
$res = mysqli_query( $db_link, $sql);
$resにはデータの登録に成功したらtrue、失敗した場合はfalseが入ります。
最後に、$resの内容を出力し、mysqli_close関数でデータベースの接続を解除して終了します。
実行結果を出力して終了
var_dump($res);
mysqli_close($db_link);
以上が関数を使った書き方でした。
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。