2017-09-19 10 views
0

Fondamentalement, j'essaie de montrer un message d'affichage selon si la rangée dans une base de données a été changée ou pas, j'ai regardé autour et il a été suggéré d'utiliser rowCount que j'ai fait, cependant il me montre toujours la mauvaise sortieMISE À JOUR avec rowCount

function makeActive() 
{ 
    try{ 
     $database = new Database; 
     $text = ""; 
     $activecode = $_GET["activecode"]; 

     $setActive = "UPDATE username SET active = '1', activecode = 'Active' WHERE activecode = :activecode";    
     $stmt = $database->query($setActive); 
     $database->bind(':activecode', $activecode); 
     $database->execute(); 
     $update = $database->rowCount(); 

     if ($update === 1) 
     { 
      return $text .="Your account is now active" . "<br><a href='index.php'>Home page</a>"; 
     } 
     else 
     { 
      return $text .="Your account is already active" . "<br><a href='index.php'>Home page</a>";    
     } 

     } 
     catch(Exception $e) 
     { 
      return $text .= "Something went wrong contact site administrator" . "<br><a href='index.php'>Login page</a>"; 
      header("refresh:10; url=index.php"); 
     } 
} 

Alors basiquement ce qui devrait arriver est si une ligne est mis à jour, il devrait afficher return $text .="Your account is now active" . "<br><a href='index.php'>Home page</a>";

base de données Ajouté classe

class Database 
{ 
    private $host = "localhost"; 
    private $user = "root"; 
    private $pass = ""; 
    private $dbname = "got"; 

    private $dbh; 
    private $error; 
    private $stmt; 

    public function __construct() 
    { 
     //SET DSN 
     $dsn = "mysql:host=". $this->host . ";dbname=" . $this->dbname; 

     $options = array 
     (
      PDO::ATTR_PERSISTENT => true, 
      PDO::ATTR_ERRMODE  =>PDO::ERRMODE_EXCEPTION 
     ); 
    //create PDO 
    try 
    { 
     $this->dbh = new PDO($dsn, $this->user, $this->pass, $options); 
    } 
    catch(PDOEception $e) 
    { 
     $this->error = $e->getMessage(); 
    } 
    } 

    public function query($query) 
    { 
     $this->stmt = $this->dbh->prepare($query); 
    } 

    public function bind($param, $value, $type = null) 
    { 
     if(is_null($type)) 
     { 
      switch(true) 
      { 
       case is_int($value): 
       $type = PDO::PARAM_INT; 
       break; 
       case is_bool($value): 
       $type = PDO::PARAM_BOOL; 
       break; 
       case is_null($value): 
       $type = PDO::PARAM_NULL; 
       break; 
       default: 
       $type = PDO::PARAM_STR; 
      } 
     } 

     $this->stmt->bindValue($param, $value, $type); 
    } 

    public function execute() 
    { 
     return $this->stmt->execute(); 
    } 

    public function lastInsertId() 
    { 
     $this->dbh->lastInsertId(); 
    } 
    public function rowCount() 
    { 
     $this->stmt->rowCount(); 
    } 

    public function connect() 
    { 
     $this->dbh->connect(); 
    } 

    public function resultset() 
    { 
     $this->execute(); 
     return $this->stmt->fetchAll(PDO::FETCH_ASSOC); 
    } 
} 

Répondre

1

Ici, il est le problème:

Remplacer la méthode:

public function rowCount() 
{ 
    $this->stmt->rowCount(); 
} 

avec ceci:

public function rowCount() 
{ 
    return $this->stmt->rowCount(); 
} 
+0

Ahh, tu es une star et je peux aller au lit, il est 02h35 ici Merci :) – cakeman

+1

De rien. Content de t'avoir aidé. Par moi c'est une heure plus tard :-) Cakeman, pour ton projet, si ça t'aide: [ma classe d'adaptateur db] (https://stackoverflow.com/questions/46014772/return-multiple-response-data-in-one -réponse/46018999 # 46018999). C'est dans la partie "EDIT" de la réponse. Au revoir. –

+0

Je regarderai quand je me réveillerai, je l'ai marqué le livre autrement je ne dormirai pas du tout lol – cakeman