お問い合わせフォームとphpmyadminの接続・保存がうまくいかない
お問い合わせフォームとphpmyadminの接続・保存
ここに解決したい内容を記載してください。
例)
phpでお問い合わせフォームからデータベースへの接続、保存について取り組んでいるのですが、フォームから入力ができて、データベース上に保存ができているか確認したところ保存ができていないことが確認できました。解決策がわからないため、どなたかご教授願います。
発生している問題・エラー
お問い合わせフォームでの入力
https://i.gyazo.com/d25f16d660b229bb91c2722760cd3a7a.gif
phpmyadminでの保存結果
https://gyazo.com/eb6ed7d91db9fd3d77fd8ed606d455aa
cafe/db_connection.phpでの出力結果
https://gyazo.com/62a64f7309006ae51180a5a3328d6a91
該当するソースコード
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="base.css">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet">
<script type="text/javascript" src="index.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<?php
session_start();
$_SESSION = array();
session_destroy();
$referer = $_SERVER['HTTP_REFERER'];
$url = "confirm.php";
if(!strstr($referer,$url)){
header("Location: contact.php");
exit;
}
$_POST = $_SESSION;
?>
<?php include 'layouts/header.php'; ?>
<section>
<div class="form" style= "margin-top:50px; margin-bottom:50px;">
<div class="form-title">
<h1 style="text-align:center;">お問い合わせ</h1>
</div>
<div class="complete-main">
<p class=complete-text>
お問い合わせ頂きありがとうございます。<br>
送信頂いた件につきましては、当社より折り返しご連絡を差し上げます。<br>
なお、ご連絡までに、お時間を頂く場合もございますので予めご了承ください。
</p>
<div class="top">
<a href="index.php">トップへ戻る</a>
</div>
</form>
</div>
</div>
</section>
<?php include 'layouts/footer.php'; ?>
<script type="text/javascript" src="index.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</body>
</html>
cafe/db_connection.php
<?php
const DB_HOST = 'mysql:dbname=cafe;host=localhost;charset=utf8';
const DB_USER = 'php_user';
const PASSWORD = 'ykb02566';
//例外処理Exeption
try{
$pdo = new PDO(DB_HOST,DB_USER,PASSWORD, [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //連想配列
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //例外
PDO::ATTR_EMULATE_PREPARES => false, //SQLインジェクション対応
]);
echo '接続成功';
} catch(PDOException $e){
echo '接続失敗' . $e->getMessage()."\n";
exit();
}
?>
該当するソースコード
<?php
//DB接続 PDO
require 'db_connection.php';
// $sql = 'select * from contacts where id = 1'; //sql
// $stmt = $pdo->query($sql); //sqlステートメント
// $result = $stmt->fetchall();
// echo '<pre>';
// var_dump($result);
// echo '</pre>';
//ユーザー入力あり prepare, bind, execute 悪意ユーザー delete * SQLインジェクション
$sql = 'select * from contacts where id = id;'; //名前つきプレースホルダー
$stmt = $pdo->prepare($sql);
$stmt->bindValue('id', 5, PDO::PARAM_INT);//紐付け
$stmt->execute();//実行
$result = $stmt->fetchall();
echo '<pre>';
var_dump($result);
echo '</pre>';
$pdo->beginTransaction();
try{
//sql処理
$stmt = $pdo->prepare($sql);
$stmt->bindValue('id', 5, PDO::PARAM_INT);//紐付け
$stmt->execute();//実行
$pdo->commit();
}catch(PDOException $e){
$pdo->rollback();
}
該当するソースコード
<?php
//DB接続PDO
// function insertContact($request){
require '/Applications/MAMP/htdocs/04_php_form/cafe/db_connection.php';
//入力 DB保存 prepare, bind, execute
// 入力 DB保存
$params = [
'id' => null,
'name' =>['name'],
'kana' =>['kana'],
'tel' =>['tel'],
'email' =>['email'],
'body' =>['body'],
'created_at' => null
];
$count = 0;
$columns = ',';
$values = ',';
foreach(array_keys($params) as $key){
if($count++>0){
$columns .=',';
$values .=',';
}
$columns .= $key;
$values .= ':'.$key;
}
$sql = 'insert into contacts ('.$columns.')values('.$values.')';
// var_dump($sql);
// exit;
$stmt = $pdo->query('SELECT * FROM contacts');
// $stmt->bindValue(':tel', (int)$tel, PDO::PARAM_INT);
$stmt->execute($params);
自分で試したこと
connect.phpが正しく実行されているなら、接続は問題ないと思います。なので、あとは保存の問題なのかどうなのか、、、
どこが原因でphpmyadminとの接続ができないのかわからないのでお願いいたします
下記参考資料
https://support.conoha.jp/v/phpmyadmin/
https://engineer-milione.com/tips/mysql-phpmyadmin.html
https://qiita.com/mpyw/items/b00b72c5c95aac573b71