• 17-06-2021, 15:54:26
    #1
    Merhaba, oyunumda kullanmak için bir restapi yapmaya çalışıyorum.
    Update yapmak için array kullanmayı denedim fakat hata alıyorum. hatanın nedenini çözemedim.
          foreach ($changes as $column => $value)
          {
              $setSql[] = "{$column} = :{$value}";
          }
          
          $sql ='UPDATE '.$table.' SET '. implode(",",$setSql) . '  WHERE userId ='.$userId.'';  
          $res =$this->conn->prepare($sql);      
          $res->execute();

    Fatal error:  Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':JvQXAYHgerfPL3j5ZO1sNxBFDGbI,teamName = :sads,season = :0,score = :0,level = :0' at line 1 in C:\inetpub\wwwroot\RestApi\models\Update.php:48
  • 17-06-2021, 17:05:20
    #2
    $setSql[] = "{$column} = :{$value}";

    : İşaretini kaldırın
  • 17-06-2021, 17:32:27
    #3
    yusuflgr adlı üyeden alıntı: mesajı görüntüle
    Merhaba, oyunumda kullanmak için bir restapi yapmaya çalışıyorum.
    Update yapmak için array kullanmayı denedim fakat hata alıyorum. hatanın nedenini çözemedim.
          foreach ($changes as $column => $value)
          {
              $setSql[] = "{$column} = :{$value}";
          }
          
          $sql ='UPDATE '.$table.' SET '. implode(",",$setSql) . '  WHERE userId ='.$userId.'';  
          $res =$this->conn->prepare($sql);      
          $res->execute();

    Fatal error:  Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':JvQXAYHgerfPL3j5ZO1sNxBFDGbI,teamName = :sads,season = :0,score = :0,level = :0' at line 1 in C:\inetpub\wwwroot\RestApi\models\Update.php:48
    foreach de $column degerinin karşısına tekrar $column atayınca sorun düzeldi.
    $changes = array();
        $changes =$json;    
        $setSql = array();
        
        foreach ($changes as $column => $value)
        {
            $setSql[] = "{$column} = :{$column}";
        }      
    
        $sql ='UPDATE '.$table.' SET '. implode(",",$setSql) . '  WHERE userId = :userId';
        $res = $this->dbconnect()->prepare($sql);
              
            foreach ($changes as $column => $value)
            {
              $res->bindValue(':' . $column, $value);      
            }
        $res->execute();