首先,根據另一個SO post,我嘗試將這兩個語句合併爲一個。合併兩個準備好的語句不起作用
<?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
。
我找不到任何相關的解決方案來解決這個問題,所以我決定簡單地分開兩個陳述。
<?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我會嘗試thx – Anthony
@Akintunde fetch實際上工作。我只是錯過了一個執行語句。我想我一直在盯着屏幕太久。我可以發誓我檢查了:/有沒有辦法將這兩個陳述結合起來? – Anthony