##解決したいこと
共通化したデータベースの関数の登録処理を別のファイルで呼び出し実行したいが、関数を実行できずにデータベースにデータを登録できない。データが登録できるように実装したい。
##該当のソースコード
complete.php
<?php ini_set('display_errors', "On"); if (empty($_SERVER["HTTP_REFERER"])) { header('Location: ./contact.php'); exit; } session_start(); require '../common/database.php'; // XSS対策 function h($s) { return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); } $name = h($_SESSION['name']); $kana = h($_SESSION['kana']); $tel = h($_SESSION['tel']); $email = h($_SESSION['email']); $body = h($_SESSION['contact']); var_dump($name); getDatabaseInsert($stmt); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="complete.css"> <link rel="stylesheet" href="../common/header.css"> <link rel="stylesheet" href="../common/footer.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="../public/js/header.js"></script> <script src="../public/js/header2.js"></script> <title>CAFE</title> </head> <body> <?php include("../common/header.php"); ?> <div class="complete-wrapper"> <div class="container"> <div class="title"> <h2>お問い合わせ</h2> </div> <div class="form-contents"> <p class="text"> お問い合わせ頂きありがとうございます。<br> 送信頂いた件につきましては、当社より折り返しご連絡差し上げます。<br> なお、ご連絡までに、お時間頂く場合もございますので予めご了承ください。<br> </p> <div class="top"> <a href="../home/index.php">トップへ戻る</a> </div> </div> </div> </div> <?php include("../common/footer.php"); ?> </body> </html>
<?php /* データベースへ接続 */ function getDatabaseConnection() { try { $dbh = new PDO('mysql:host=localhost;dbname=cafe;charset=utf8mb4', 'root', 'root'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); return $dbh; } catch (PDOException $e){ echo $e->getMessage(); exit; } } // データベースの登録 function getDatabaseInsert() { try{ $dbh = getDatabaseConnection(); $dbh->beginTransaction(); $sql = 'INSERT INTO contacts(name,kana,tel,email,body) VALUES(:name,:kana,:tel,:email,:body)'; $stmt = $dbh->prepare($sql); $stmt->bindParam(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':kana', $kana, PDO::PARAM_STR); $stmt->bindParam(':tel', $tel, PDO::PARAM_INT); $stmt->bindParam(':email', $email, PDO::PARAM_STR); $stmt->bindParam(':body', $body, PDO::PARAM_STR); $stmt->execute(); $dbh->commit(); } catch (PDOException $e) { $dbh->rollBack(); echo 'データベースにアクセスできません!'.$e->getMessage(); } return $stmt; } // データベースの取得 function getDatabaseSelect() { try { $dbh = getDatabaseConnection(); $dbh->beginTransaction(); $sql = 'SELECT id,name,kana,tel,email,body FROM contacts'; $stmt = $dbh->query($sql); $result = $stmt->fetchall(PDO::FETCH_ASSOC); $dbh->commit(); $dbh = null; } catch (PDOException $e){ $dbh->rollBack(); echo $e->getMessage(); exit; } return $result; } ?>
##試したこと
・そもそもフォームに入力したデータは送信されているのか?
var_dump($name)を実行し、が画像のようにデータは送信できている。
初歩的な質問かもしれませんが、ハマってしまい自力解決できなかったので、ご指摘いただけると幸いです。
回答2件
あなたの回答
tips
プレビュー