発生している問題・エラーメッセージ
wordpressでphpからmysqlのsql文を実行しているのですがInsertが2回実行されており、どうも高速で2回更新が走っているようです
該当のソースコード
php
1session_start(); 2if (apcu_add($_SERVER['REMOTE_ADDR'], 1, 1)) { 3if(!(isset($_SESSION['id']))){ 4 header('Location:https://'); 5 exit(); 6 } 7 //DB情報省略 8try { 9 // PDOインスタンスの作成 10 $db = new PDO($dsn, $user, $password); 11 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 12 // プリペアドステートメントを作成 13 $stmt = $db->prepare(" 14 INSERT INTO sample (id,title,content,date,kinds,difficulty,comment) 15 VALUES (:id,:title,:content,:date,:kinds,:difficulty,:comment); 16 "); 17 18 // プリペアドステートメントにパラメータを割り当てる 19 $stmt->bindParam(':id', $id, PDO::PARAM_STR); 20 $stmt->bindParam(':title', $title, PDO::PARAM_STR); 21 $stmt->bindParam(':content', $content, PDO::PARAM_STR); 22 $stmt->bindParam(':date', date("Y-m-d H:i:s"), PDO::PARAM_STR); 23 $stmt->bindParam(':kinds', $kinds, PDO::PARAM_STR); 24 $stmt->bindParam(':difficulty', $difficulty, PDO::PARAM_STR); 25 $stmt->bindParam(':comment', $comment, PDO::PARAM_STR); 26 // クエリの実行 27 $stmt->execute(); 28 29} catch (PDOException $e){ 30 exit('エラー:' . $e->getMessage()); 31 } 32 }
試したこと
apcu_add($_SERVER['REMOTE_ADDR'], 1,1)で1秒以内に2回以上アクセスされたらsqlを実行しないようにしたが(apcu_add($_SERVER['REMOTE_ADDR'], 1, 1)を入れたらそもそも両方通らなくなった
補足情報(FW/ツールのバージョンなど)
xServer
プラグイン:XYZ PHP Cord
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/08 23:53