初めに
phpでフォームの入力内容をDBに保存する方法について学習した内容のoutput用記事です。
※内容に間違いなどがある場合はご指摘をよろしくお願いします。
※こちらの記事はあくまでも個人で学習した内容のoutputとしての記事になります。
前回の記事:
https://qiita.com/redrabbit1104/items/a6e57aa1fd1771ef90ff
https://qiita.com/redrabbit1104/items/a3eaf2bba51fac0b3c51
https://qiita.com/redrabbit1104/items/6e9c85c7503ed9043f38
https://qiita.com/redrabbit1104/items/c9b7bb7a89922521c003
https://qiita.com/redrabbit1104/items/3c83883ab811d7bd1337
phpファイルの読み込みとDB保存のための関数
入力フォームの完了画面のあたりに前回作成したデータベースへ保存処理が書かれているphpファイルを読み込みます。
<?php require 'insert.php'; ?>
また、insert.phpファイルにはDBに入力フォームの内容を保存する関数を作成します。関数の引数にはフォームの入力値が入っている\$_POSTを渡します。
<?php require 'insert.php';
insertPost($_POST);
?>
insertPost()関数の作成と$paramsのvalueを修正
insert.phpファイルのデータベースにデータを保存する処理が書かれている部分をinsertPost関数の処理部分として{}で囲みます。
// insert.php
<?php
const DB_HOST = 'mysql:dbname=udemy_php;host=localhost:8889;charset=utf8';
const DB_USER = 'php_user';
const DB_PASSWORD = 'wlfkfakfk12';
function insertPost($request){ //追記
try{
$pdo = new PDO(DB_HOST, DB_USER, DB_PASSWORD, [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
]);
}catch(PDOException $e){
echo $e -> getMessage() . "\n";
exit();
}
$params = [
'id' => null,
'your_name' => '田中',
'email' => 'test@test.com',
'url' => 'http://www.abc.com',
'gender' => '1',
'age' => '2',
'contact' => 'いい',
'created_at' => null
];
$count = 0;
$columns = '';
$values = '';
foreach(array_keys($params) as $key){
if($count++>0){
$columns .= ',';
$values .= ',';
}
$columns .= $key;
$values .= ':'.$key;
}
var_dump($columns);
var_dump($values);
$pdo->beginTransaction();
try {
$sql = 'insert into contacts ('. $columns .')values('. $values .')';
var_dump($sql);
//string(143) "insert into contacts (id,your_name,email,url,gender,age,contact,created_at)values(:id,:your_name,:email,:url,:gender,:age,:contact,:created_at)"
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$pdo->commit();
$result = $stmt->fetchall();
var_dump($result);
} catch (PDOException $e) {
$pdo->rollback();
echo $e;
}
}
?>
また、\$paramsのキーに対するvalueの値を修正します。
//中略
$params = [
'id' => null,
'your_name' => $request['your_name'], //修正
'email' => $request['email'],
'url' => $request['url'],
'gender' => $request['gender'],
'age' => $request['age'],
'contact' => $request['contact'],
'created_at' => null
];
//中略