前提・実現したいこと
PHPを学習中です。会員同士が使える掲示板機能を作っています。
発生している問題・エラーメッセージ
メッセージを送ろうとpost送信すると2回INSERTが実行されてしまいます。
エラーメッセージはありません。
該当のソースコード
//問題のコードがこちらです try { $dbh = dbConnect(); $sql = 'INSERT INTO message (board_id, send_date, to_user, from_user, msg, create_date) VALUES (:board_id, :send_date, :to_user, :from_user, :msg, :create_date)'; $data = array( ':board_id' => $m_id, ':send_date' => date('Y-m-d H:i:s'), ':to_user' => $partnerUserId, ':from_user' => $_SESSION['user_id'], ':msg' => $msg, ':create_date' => date('Y-m-d H:i:s') ); $stmt = queryPost($dbh, $sql, $data); if ($stmt) { $_POST = array(); header("Location:" . $_SERVER['PHP_SELF'] . '?m_id=' . $m_id); exit(); } } catch (Exception $e) { error_log('エラー発生:' . $e->getMessage()); $err_msg['common'] = MSG07; } //DBへの接続を関数に切り出しています。 function dbConnect() { $dsn = 'mysql:dbname=market;host=localhost;port=8889;chars=utf8mb4'; $user = 'root'; $password = 'root'; $options = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); $dbh = new PDO($dsn, $user, $password, $options); return $dbh; } //クエリ実行を関数に切り出しています。 function queryPost($dbh, $sql, $data) { $stmt = $dbh->prepare($sql); $stmt->execute($data); if (!$stmt->execute($data)) { return false; } return $stmt; } //HTMLのフォームタグです <form action="" method="post"> <textarea name="msg" cols="30" rows="3"></textarea> <input type="submit" value="送信" class="btn btn-send"> </form>
試したこと
クエリが2回実行されてるからでは、と思い確認し
コードを変えてみたりもしましたが自分では原因がわかりませんでした。
考えられる原因を教えていただけないでしょうか。
補足情報(FW/ツールのバージョンなど)
ブラウザはchromeを使っています
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/23 08:43