次のようなPHPを作成しています。 ・初期化ボタンを押すと、任意のIDのフィールド(1~48)を初期化する(同じ値で埋める) ・スタートボタンを押すと、任意のIDのステータス(カラム:userStatus)が特定の値か確認し、特定の値の場合のみ、任意のIDのフィールド(1~48)を初期化し(同じ値で埋め)、次の処理を続ける 【form.php】========================================== <?php include ('function.php'); //スタートボタンが押されたとき if(isset($_POST['start'])){ $dsn = 'sqlite:card.db'; $pdo = new PDO($dsn); $userID = $_POST['ID']; /*=====ステータスの確認=====*/ $sql = "SELECT status, flag FROM userStatus INNER JOIN cardPlay USING (ID) WHERE ID=$userID"; $conn = $pdo->query($sql); $result = $conn->fetch(PDO::FETCH_ASSOC); //ステータスが11なら開始する if($result['userStatus'] == 11){ $init = setCard($userID); (略) echo "カードをセットしました<br>"; }else{ echo "ステータスが違います<br>"; } } //リセットボタンが押されたとき if(isset($_POST['reset'])){ $userID = $_POST['ID']; $init = setCard($userID); if($init){ echo "初期化しました。"; }else{ echo "初期化に失敗しました。"; } } ?> <html> (略) <form action="" method="post"> <input type="submit" name="start" value="スタート"><br> <input type="submit" name="reset" value="初期化"> <input type="hidden" name="ID" value="11111111"> </form> (略) </html> 【function.php】============================================= <?php function setCard($ID){ $dsn = 'sqlite:card.db'; $pdo = new PDO($dsn); $sql = "UPDATE userCard SET card1 = 'aaa', card2 = 'aaa', (中略) card48 = 'aaa' WHERE ID = $userID "; $result2 = $pdo->query($sql); return $result2; } ?> 現在このように記述しているのですが、下記の部分 //ステータスが11なら開始する if($result['userStatus'] == 11){ $init = setCard($userID); (略) echo "カードをセットしました<br>"; } のところ、setCard($userID)で処理がタイムアウトし、タイムアウトエラーが帰ってきてしまいます。 「リセットボタンが押されたとき」の処理ではタイムアウトせず「初期化しました。」が出力されており、実際にDBを確認すると値が更新されているので、SQL文のエラーでないことは分かるのですが、前述の部分でだけタイムアウトする理由が分かりません…。 SQLの接続とクローズ周りかとも思うのですが、どなたかお分かりになりましたらお知恵を拝借したく思います。 【環境】 Windows7Pro 64bit SQLite3.7.4 PHP5.2.17
↧