2017-08-22 2 views
0

Zuerst, nach einer anderen SO post, habe ich versucht, die beiden Aussagen zu einer zu kombinieren.Kombination von zwei vorbereiteten Anweisungen funktioniert nicht

<?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 
?> 

Dies jedoch hielt den Fehler: Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error on line 71.

Ich konnte keine relevanten Lösungen für dieses Problem finden, daher entschied ich mich, die beiden Aussagen einfach aufzuteilen.

<?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"]; 
?> 

Aber ein var_dump($result) ist Bool(false) Rückkehr, so offensichtlich etwas nicht funktioniert richtig mit dem Ergebnis holen und es als eine Variable zu speichern, so scheint es, in beiden Fällen.

Ich bin neu in PHP und MySQL, also bin ich jetzt ratlos.

+1

Versuchen Sie mit fetchAll statt holen – Akintunde007

+0

@Akintunde Ich werde versuchen, dass thx – Anthony

+0

@Akintunde Fetch tatsächlich funktioniert. Ich habe gerade eine Ausführungsanweisung verfehlt. Ich schätze, ich habe zu lange auf einen Bildschirm gestarrt. Ich hätte schwören können, dass ich das überprüft habe:/Gibt es keine Möglichkeit, die beiden Aussagen zu kombinieren? – Anthony

Antwort

1

Ändern Sie diese,

$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"]; 

Hierzu

$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"]; 

Sie vermissen die Ausführung der Abfrage.

+0

NM übernehmen, ich nehme an, ich habe es vermisst o: ich hätte schwören können, dass ich das überprüft habe. ist es nicht möglich, die 2 Abfragen zu kombinieren? – Anthony

+0

diese Frage jetzt löschen. Ich will keine anderen Down-Stimmen:/ – Anthony

+1

Ich balancierte es keine Frage ist dumm, auch ich habe solche Dinge gefragt. – Sand

Verwandte Themen