まず、別のSO postに従って、2つのステートメントを1つに結合しようとしました。準備された2つのステートメントを結合していない
<?php
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$sql = "UPDATE users SET pass = :password WHERE usrn = :id;
SELECT prim FROM users WHERE usrn = :id;";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":id", $_SESSION["idPersist"]);
$stmt->bindParam(":password", password_hash($_POST["password"], PASSWORD_DEFAULT));
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC); //// line 71
?>
しかし、これはエラーを投げ続けました:Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error on line 71
。
私はこの問題に関連する解決策を見つけることができなかったので、私は2つのステートメントを分割することにしました。
<?php
$sql = "UPDATE users SET pass = :password WHERE usrn = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":id", $_SESSION["idPersist"]);
$stmt->bindParam(":password", password_hash($_POST["password"], PASSWORD_DEFAULT));
$stmt->execute();
$sql = "SELECT prim FROM users WHERE usrn = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":id", $_SESSION["idPersist"]);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION["session"] = $result["prim"];
?>
しかしvar_dump($result)
がBool(false)
を返しているので、明らかに何かが結果を取得し、変数として、それを保存すると正しく動作していない、それは両方のケースでは、と思われます。
私はPHPとMySQLを初めて使いました。
代わりにfetchAllを試してみてください。 – Akintunde007
@Akintunde私はそれを試してみます – Anthony
@Akintundeフェッチが実際に動作します。私はちょうど実行ステートメントが不足していた。私はあまりにも長い間スクリーンを見つめていたと思う。私はそれをチェックして誓ったことができました:/ 2つのステートメントを組み合わせる方法はありませんか? – Anthony