2017-08-22 9 views
0

まず、別の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を初めて使いました。

+1

代わりにfetchAllを試してみてください。 – Akintunde007

+0

@Akintunde私はそれを試してみます – Anthony

+0

@Akintundeフェッチが実際に動作します。私はちょうど実行ステートメントが不足していた。私はあまりにも長い間スクリーンを見つめていたと思う。私はそれをチェックして誓ったことができました:/ 2つのステートメントを組み合わせる方法はありませんか? – 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

関連する問題