mariadbへのインサートでエラー
https://qiita.com/jackytom/questions/cc81fb045aebe135c457#answer-f37c3c748ce05f27f1c6
の続きになります。
上記で解決したと説明しましたが、暗号化のパスワードが「.pass.」の文字列になってしまいました。
本来は$password変数に格納されている文字列を利用したいため、再度ソースを見直しました。
そして、書き直したのが添付しているソースです。
しかしながら、
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
とエラーになってしまいました。
要はSQL構文エラーと思っていてSQLを再確認しましたが、恥ずかしながらどこに問題があるのか見つけられませんでした。
問題点を見つけるのにご協力いただければ幸いです。
よろしくお願いいたします。
該当するソースコード
<?php
session_start();
if (isset($_POST['token']) && isset($_SESSION['token'])) {
$token = $_POST['token'];
}
else if ($token != $_SESSION['token']) {
header("Location: contact.php");
echo ('アクセスが中断されました。');
exit();
}
else {
header("Location: contact.php");
echo ('不正なアクセスです');
exit();
}
session_destroy();
function escape($val)
{
return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
require_once('db_connect.php');
require_once('password_db.php');
?>
<!doctype html>
<html lang=ja>
<head>
<meta charset="utf-8">
<title>Salon Yuri-rinへのお問い合わせ</title>
<meta name="description" content="ヘッドセラピーを中心としたセラピーのサービスを提供しております。">
<!--リセットcss-->
<link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
<!--css-->
<link href="css/contact_style.css" rel="stylesheet">
<!--レスポンシブ対応-->
<meta name="viwport" content="width=device-width, initial-scale=1">
<!--Googleフォント-->
<link href="https://fonts.googleapis.com/css2?family=Sawarabi+Gothic&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500&display=swap" rel="stylesheet">
</head>
<body>
<?php require_once('header.php');?>
<main>
<h1>
Salon Yuri-rinへの問い合わせ
</h1>
<?php
$sql=$pdo->prepare("insert into contact(contact_id,members_id,contact_date,last_name,first_name,last_name_kana,first_name_kana,mail_address,contact_div_id,contact_cont,agree_div,anser_date,anser_cont,anser_div,anser_user) values
(null,
null,
null,
HEX(AES_ENCRYPT(?," . $password . ")),
HEX(AES_ENCRYPT(?," . $password . ")),
HEX(AES_ENCRYPT(?," . $password . ")),
HEX(AES_ENCRYPT(?," . $password . ")),
HEX(AES_ENCRYPT(?," . $password . ")),
?,
?,
1,
null,
null,
null,
null)");
if($_SERVER['REQUEST_METHOD'] === 'POST'){
if(empty(escape($_POST['sei'])) || empty(escape($_POST['mei'])) || empty(escape($_POST['sei_kana'])) || empty(escape($_POST['mei_kana'])) || empty(escape($_POST['mail_address'])) || empty(escape($_POST['contact_cont']))){
echo '未入力の項目があります。';
}
else if(escape($_POST['contact_div']) === "0"){
echo '問い合わせ区分を選択してください。';
}
else if(!preg_match('/\A[ァ-ヴー]+\z/u', $_POST['sei_kana']) || !preg_match('/\A[ァ-ヴー]+\z/u', $_POST['mei_kana'])){
echo 'カナ名は全角カナで入力します。';
}
else if(!preg_match('/^[a-zA-Z0-9_.+-]+(\.[a-zA-Z0-9_+-]+)*@([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$/',$_POST['mail_address'])){
echo 'メールアドレスはメールアドレスの形式で入力します。';
}
else if($sql -> execute([
escape($_POST['sei']),
escape($_POST['mei']),
escape($_POST['sei_kana']),
escape($_POST['mei_kana']),
escape($_POST['mail_address']),
escape($_POST['contact_div']),
escape($_POST['contact_cont'])
]))
{
require_once('contact_mail_c.php');
require_once('contact_mail_s.php');
header('Location: contact_end.php', true, 303);
exit();
}
else {
echo '登録に失敗しました。';
}
}?>
<?php require_once('footer.php');?>
</body>
</html>
0