jackytom
@jackytom

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PHPでシンタックスエラー

Q&A

Closed

PHPでDBを更新するソースを書いていますが、

Parse error: syntax error, unexpected token ";" in C:\xampp\htdocs\Portfolio\password_reissue_commit.php on line 47

のエラーになります。

不要なセミコロンがあるか、近辺に不足があるかと思うのですが、47行目のセミコロンは末尾のセミコロンのみです。
他にも不足等確認したのですが、見つけることができませんでした。

試しにセミコロンを消すと当然別のエラーになります。
念のため、エラー内容は下記です。

Parse error: syntax error, unexpected variable "$stmt" in C:\xampp\htdocs\Portfolio\password_reissue_commit.php on line 48

原因究明にご協力いただければ幸いです。
ソースを添付します。

<?php<?php
	session_start();
	if(!isset($_SESSION['token']) || !isset($_POST['token']) || $_SESSION['token'] !== $_POST['token']){
		
		die('不正なリクエストです。処理を中断します。');
	}

	function escape($val)
	{
		return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
	}
?>
<!doctype html>
<html lang=ja>
	<head>
		<meta charset="utf-8">
		<title>パスワード再発行</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>パスワード再発行</h1>
		<?php
			require_once('db_connect.php');
			require_once('password_hash.php'); 

			if($_SERVER['REQUEST_METHOD'] === 'POST'){
				if(empty(escape($_POST['new_pass'])) || empty(escape($_POST['new_pass_con']))){
					echo '未入力の項目があります。';
				}
				else if(escape($_POST['new_pass']) !== escape($_POST['new_pass_con'])){
					echo '2つのパスワードが一致しません。';
				}
				else if(!preg_match('/^[a-zA-Z0-9!-/:-@¥[-`{-~]{10,}$/', $_POST['new_pass']) || !preg_match('/^[a-zA-Z0-9!-/:-@¥[-`{-~]{10,}$/', $_POST['new_pass_con'])){
					echo '英数字記号10字以上で入力します。';
				}
				else if($sql=('update customer set password=:password where customer_id = :customer_id')
						$stmt = $pdo->prepare($sql);
						$stmt -> bindValue(':password', $pass);
						$stmt -> bindValue(':customer_id',$_SESSION['customer']['customer_id']);
						$stmt -> execute();)
					{
					header('Location: password_reissue_end.php', true, 303);
					exit();
						}
						else {
							echo '更新に失敗しました。';
							}
		}?>
		<?php require_once('footer.php');?>
	</body>
</html>

0

1Answer

				else if($sql=('update customer set password=:password where customer_id = :customer_id')
						$stmt = $pdo->prepare($sql);
						$stmt -> bindValue(':password', $pass);
						$stmt -> bindValue(':customer_id',$_SESSION['customer']['customer_id']);
						$stmt -> execute();)
					{

else if (...) のカッコの中には1つの条件式しか書けません。複数の文を書いているせいでエラーになっています。

1Like

Comments

  1. @jackytom

    Questioner

    回答ありがとうございます。
    条件を一つにしてエラー解消しました。
    本件、クローズさせていただきます。

Your answer might help someone💌