仅在where子句与$ _SESSION相同时更新

时间:2019-01-18 10:57:05

标签: php mysql sql sql-update where

我无法更新我的配置文件页面。我可以更新它,但是它将更新所有记录,因此我认为我仅在用户名(Gebruikersnaam)与会话用户名($ _SESSION ['USER'])相同时进行更新。

这是我尝试过的方法,但这对我不起作用。

<?php
if (isset($_POST["wijzig"])) {
   global $db;
   $Voorletters = htmlspecialchars($_POST["Voorletters"]);
   $Tussenvoegsel = htmlspecialchars($_POST["Tussenvoegsel"]);
   $Achternaam = htmlspecialchars($_POST["Achternaam"]);
   $Adres = htmlspecialchars($_POST["Adres"]);
   $Postcode = htmlspecialchars($_POST["Postcode"]);
   $Woonplaats = htmlspecialchars($_POST["Woonplaats"]);
   $Gebruikersnaam = $_SESSION['USER'];
    $sql1 = "UPDATE klant SET Voorletters=:voorletters, Tussenvoegsel=:tussenvoegsel, Achternaam=:achternaam, Adres=:adres, Postcode=:postcode, Woonplaats=:woonplaats
    WHERE Gebruikersnaam = $Gebruikersnaam";
    $stmt = $db->prepare($sql1);
    $data = array("voorletters" => $Voorletters, "tussenvoegsel" => $Tussenvoegsel, "achternaam" => $Achternaam, "adres" => $Adres, "postcode" => $Postcode, "woonplaats" => $Woonplaats);

    try {
        $stmt->execute($data);

    } 
    catch (PDOException $e) {
      echo $e->getMessage();
    }
} 
?>

我得到的错误:

  

SQLSTATE [42S22]:找不到列:1054中的未知列'faas'   “ where子句”

这是我的第一个问题,因此,如果我错过了一些信息或东西,请告诉我。希望你们能帮助我!

1 个答案:

答案 0 :(得分:1)

"UPDATE klant SET Voorletters=:voorletters, Tussenvoegsel=:tussenvoegsel, Achternaam=:achternaam, Adres=:adres, Postcode=:postcode, Woonplaats=:woonplaats
    WHERE Gebruikersnaam = '$Gebruikersnaam'";

您缺少WHERE子句中的引号。但是,您应该为此使用一条准备好的语句,因为您的代码可以进行SQL注入。