phpmyadminとphpの保存について
phpmyadminとphpの保存について
phpmyadminとphpの接続保存ができたが、お問い合わせフォームから送信してdbの中身を見てみると、保存内容が全てnullになってしまうのを解決したい。あと一度の送信につき1レコードが通常であれば、更新されるはずだが、膨大な量のレコードが更新されるのはなぜか。
発生している問題・エラー
1 何もない状態
https://gyazo.com/720cb4af4706f692c3cabe836c3461e4
2 フォームから送信した時の状態
https://gyazo.com/dea74b9420555e5a944adf7404a235d4
3 正常に保存できているかの確認
https://gyazo.com/da859b961f5659295e253abfaad81d92
4 データベース上の確認
https://gyazo.com/455ed18e378ecef2df4adfa77ef25000
該当するソースコード
<!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 include 'layouts/header.php'; ?>
<?php session_start() ?>
<div class="form-wrapper">
<div class="error">
<h1>
<?php
if(isset($_SESSION["texts"])){
foreach($_SESSION["texts"] as $error){
echo $error."<br>";
}
}?>
</h1>
</div>
<div class="form">
<div class="form-title">
<h1 style="text-align:center;">お問い合わせ </h1>
</div>
<div class="form-main">
<div class="back">
<h2>下記の項目をご記入の上送信ボタンを押してください</h2>
</div>
<p>送信頂いた件につきましては、当社より折り返しご連絡を差し上げます。<br>
なお、ご連絡までに、お時間を頂く場合もございますので予めご了承ください。<br>
<span>*</span>は必須項目となります。</p>
<form action="" method="POST">
<div class="form-contents">
<div class="form-content">
<h3>氏名<span>*</span></h3>
<input type="text" name="name"
value="<?php
if(!empty($_SESSION["name"])){
echo $_SESSION["name"];
}
?>" placeholder="山田太郎" class="inputName">
</div>
<div class="form-content">
<h3>フリガナ<span>*</span></h3>
<input type="text" name="kana"
value="<?php
if(!empty($_SESSION["kana"])){
echo $_SESSION["kana"];
}
?>" placeholder="ヤマダタロウ" class="inputKana">
</div>
<div class="form-content">
<h3>電話番号</h3>
<input type="text" name="phone"
value="<?php
if(!empty($_SESSION["phone"])){
echo $_SESSION["phone"];
}
?>" placeholder="09012345678" class="inputPhone">
</div>
<div class="form-content">
<h3>メールアドレス<span>*</span></h3>
<input type="text" name="address"
value="<?php
if(!empty($_SESSION["address"])){
echo $_SESSION["address"];
}
?>" placeholder="test@test.co.jp" class="inputAddress">
</div>
</div>
<div class="back">
<h2>お問い合わせ内容をご記入ください<span>*</span></h2>
</div>
<textarea name="question" class="inputQuestion"><?php
if(!empty($_SESSION["question"])){
echo $_SESSION["question"];
}?></textarea><br>
<input type="submit" value="送 信" class="form-submit" formaction="validate.php" >
</form>
</div>
</div>
</div>
<?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>
該当するソースコード
<!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();
$referer = $_SERVER['HTTP_REFERER'];
$url = "contact.php";
if(!strstr($referer,$url)){
header("Location: contact.php");
exit;
}
unset($_SESSION["texts"]);
$_POST = &$_SESSION;
?>
<?php include 'layouts/header.php'; ?>
<div class="form-wrapper">
<div class="form">
<div class="form-title">
<h1 style="text-align:center;">お問い合わせ</h1>
</div>
<div class="confirm-group">
<form>
<p class=confirm-text>
下記の内容をご確認の上送信ボタンを押してください<br>
内容を訂正する場合は戻るを押してください。
</p>
<div class="confirm-contents">
<div class="confirm-content">
<h1>氏名</h1>
<h2><?php echo htmlspecialchars($_POST["name"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>フリガナ</h1>
<h2><?php echo htmlspecialchars($_POST["kana"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>電話番号</h1>
<h2><?php echo htmlspecialchars($_POST["phone"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>メールアドレス</h1>
<h2><?php echo htmlspecialchars($_POST["address"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>お問い合わせ内容</h1>
<h2><?php echo nl2br(htmlspecialchars($_POST["question"], ENT_QUOTES, 'UTF-8')); ?></h2>
</div>
</div>
<div class="buttons">
<input type="submit" value="送 信" class="confirm-submit" formaction="complete.php">
<input type="submit" value="戻 る" class="confirm-return" formaction="contact.php">
</div>
</form>
</div>
</div>
</div>
<?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>
該当するソースコード
<!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();
$referer = $_SERVER['HTTP_REFERER'];
$url = "contact.php";
if(!strstr($referer,$url)){
header("Location: contact.php");
exit;
}
unset($_SESSION["texts"]);
$_POST = &$_SESSION;
?>
<?php include 'layouts/header.php'; ?>
<div class="form-wrapper">
<div class="form">
<div class="form-title">
<h1 style="text-align:center;">お問い合わせ</h1>
</div>
<div class="confirm-group">
<form>
<p class=confirm-text>
下記の内容をご確認の上送信ボタンを押してください<br>
内容を訂正する場合は戻るを押してください。
</p>
<div class="confirm-contents">
<div class="confirm-content">
<h1>氏名</h1>
<h2><?php echo htmlspecialchars($_POST["name"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>フリガナ</h1>
<h2><?php echo htmlspecialchars($_POST["kana"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>電話番号</h1>
<h2><?php echo htmlspecialchars($_POST["phone"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>メールアドレス</h1>
<h2><?php echo htmlspecialchars($_POST["address"], ENT_QUOTES, 'UTF-8'); ?></h2>
</div>
<div class="confirm-content">
<h1>お問い合わせ内容</h1>
<h2><?php echo nl2br(htmlspecialchars($_POST["question"], ENT_QUOTES, 'UTF-8')); ?></h2>
</div>
</div>
<div class="buttons">
<input type="submit" value="送 信" class="confirm-submit" formaction="complete.php">
<input type="submit" value="戻 る" class="confirm-return" formaction="contact.php">
</div>
</form>
</div>
</div>
</div>
<?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>
該当するソースコード
<?php
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
$name = filter_input(INPUT_POST, 'kana', FILTER_SANITIZE_SPECIAL_CHARS);
$name = filter_input(INPUT_POST, 'phone', FILTER_SANITIZE_SPECIAL_CHARS);
$name = filter_input(INPUT_POST, 'address', FILTER_SANITIZE_SPECIAL_CHARS);
$name = filter_input(INPUT_POST, 'question', FILTER_SANITIZE_SPECIAL_CHARS);
$db = new mysqli('localhost:8889', 'php_user', 'ykb02566', 'cafe');
$stmt = $db->prepare('insert into contacts(name,kana,phone,address,question) values(?,?,?,?,?)');
if (!$stmt):
die($db->error);
endif;
$stmt ->bind_param('ssiss', $name, $kana, $phone, $address, $question);
$ret = $stmt->execute();
if ($ret):
echo 'データを挿入しました';
else:
echo $db->error;
endif;
// if($records){
// while($record =$records->fetch_assoc()){
// echo $record['name'].'<br>';
// }
// }
// var_dump( $records);
?>
自分で試したこと
まず、phpmyadmin上に直接クエリでやれば、保存はできていることを確認
フォームからの送信のみ、nullになるのはどうしてか。
以下調べてみたが、ヒントになりそうなものはなさそう。
https://excel-ubara.com/vba_sql/vba_SQL010.html
https://lukesilvia.hatenablog.com/entry/20100322/p1
あとフォームから一度だけ送信したのに、phpmyadmin上では、何個か更新されているのはなぜか。どなたか教授願います。