###前提・実現したいこと
いつも、大変お世話になっております。
SQLSTATE[HY000]: General error: 2031 発生して困っています。
ネットで調べても、あまり記載がない(queryだからダメだったとか)ので
どのように回避すればいいかわかりません。
他でもPDOを使ってますが、カーソルクリアーしてダメだった事はなく。
一つ、insert文がおかしいのかな?なんて思ってもみましたが、
DBとカラム名も同じですし、たぶん、間違っていたら違うエラーに
なると思っています。
何か、根本的な間違いなのでしょうか?
もし、ご存知の方、ご支援頂けますよう、よろしくお願いします。
###発生している問題・エラーメッセージ
SQLSTATE[HY000]: General error: 2031
引っかかってる箇所は、2回目のexecuteだと思います。
var_dumpで直前まで吐き出す事ができるので。
###該当のソースコード
if(filter_input(INPUT_POST, "chng") == "on"){ $valMail = filter_input(INPUT_POST, "login-email"); $valLoginid = filter_input(INPUT_POST, "login-id"); require("./dbs.php"); $sql = "select * from m_user where loginid = :val1 and email = :val2"; try { $pdo -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo -> prepare($sql); $stmt -> bindValue(':val1',$valLoginid,PDO::PARAM_STR); $stmt -> bindValue(':val2',$valMail,PDO::PARAM_STR); $stmt -> execute(); if($row = $stmt -> fetch()){ $result = 1; //使用済ならTRUE $valUserID = $row['id']; $flg = 0; $urltoken = hash('sha256',uniqid(rand(),1)); $url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] ."/ginou/loginpassreg.php?urltoken=".$urltoken; //データベースに値を挿入 $sql1 = "insert into t_passchng (urltoken,userid,loginid,email,flg,uptime) values (:urltoken,:userid,:loginid,:email,:flg,:uptime)"; try { $stmt1 = $pdo -> prepare($sql1); $stmt1 -> bindValue(':urltoken',$urltoken,PDO::PARAM_STR); $stmt1 -> bindValue(':userid',$valUserID,PDO::PARAM_INT); $stmt1 -> bindValue(':loginid',$valLoginid,PDO::PARAM_STR); $stmt1 -> bindValue(':loginid',$valMail,PDO::PARAM_STR); $stmt1 -> bindValue(':flg',$flg,PDO::PARAM_INT); $stmt1 -> bindValue(':uptime',date('Y/m/d H:i:s'),PDO::PARAM_STR); $stmt1 -> execute(); } catch (PDOException $e){ die($e->getMessage()); } // ************** ここにメール送信ロジック追加 ************** }else{ $result = 2; //使ってなければFALSE } } catch (PDOException $e){ die($e->getMessage()); } }
###試したこと
$stmt cursolClear や NULL してみたり、、
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);をtrueにしてみたり・・
###補足情報(言語/FW/ツール等のバージョンなど)
XAMPP 5.6.3-0 for MAC
MySQL 5.6.21
PHP 5.6.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/04 05:08
退会済みユーザー
2016/12/04 05:12