2017-08-22 42 views
0

首先,根據另一個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,所以我現在虧本了。

+1

嘗試使用fetchAll而不是取回 – Akintunde007

+0

@Akintunde我會嘗試thx – Anthony

+0

@Akintunde fetch實際上工作。我只是錯過了一個執行語句。我想我一直在盯着屏幕太久。我可以發誓我檢查了:/有沒有辦法將這兩個陳述結合起來? – Anthony

回答

1

改變這一狀況,

$sql = "SELECT prim FROM users WHERE usrn = :id"; 
$stmt = $conn->prepare($sql); 
$stmt->bindParam(":id", $_SESSION["idPersist"]); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 
$_SESSION["session"] = $result["prim"]; 

對此,

$sql = "SELECT prim FROM users WHERE usrn = :id"; 
$stmt = $conn->prepare($sql); 
$stmt->bindParam(":id", $_SESSION["idPersist"]); 
$stmt->execute(); // Your problem 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 
$_SESSION["session"] = $result["prim"]; 

你缺少查詢的執行。

+0

NM我想我確實想念它:我可以發誓我檢查了這一點。是不是可以組合2個查詢? – Anthony

+0

現在刪除此問題。我不希望任何其他的投票:/ – Anthony

+1

我平衡它,即使我問過這樣的事情,也沒有問題是愚蠢的。 – Sand