2016-03-19 14 views
-2

"display_name" öğesinin boş olamayacağını, ancak $ display_name = null değiştirdiğimde;$ display_name = ''; Doldurduğum diğer alan veritabanına gidecek, ancak display_name alanında kaydedilmedi. Yani herkes bunu düzeltmeme yardım edebilir mi? Teşekkürler ! Bunu yerine $this->display_name kurmadığını olduğunuzu konudur gibi açıklamalara dayanarakSQLSTATE [23000]: Bütünlük kısıtlaması ihlali: 1048 'display_name' sütunu boş olamaz?

<?php 

class Users { 

    public $display_name = null; 
    public $email = null; 
    public $password = null; 
    public $salt = "Zo4rU5Z1YyKJAASY0PT6EUg7BBYdlEhPaNLuxAwU8lqu1ElzHv0Ri7EM6irpx5w"; 





public function __construct($data = array()) { 
       if(isset($data['email'])) $this->email = stripslashes(strip_tags($data['email'])); 
       if(isset($data['password'])) $this->password = stripslashes(strip_tags($data['password'])); 
} 

public function storeFormValues($params) { 
       //store the parameters 
       $this->__construct($params); 
} 

public function userLogin() { 
        //success variable will be used to return if the login was successful or not. 
        $success = false; 
        try{ 
        //create our pdo object 
        $con = new PDO(db_dsn, server_user, server_pass); 
        //set how pdo will handle errors 
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        //this would be our query. 
        $sql = "SELECT * FROM gs_users_table WHERE email = :email AND password = :password LIMIT 1"; 
         //prepare the statements 
        $stmt = $con->prepare($sql); 
        //give value to named parameter :email 
        $stmt->bindValue("email", $this->email, PDO::PARAM_STR); 
        //give value to named parameter :password 
        $stmt->bindValue("password", hash("sha512", $this->password . $this->salt), PDO::PARAM_STR); 
        $stmt->execute(); 

        $valid = $stmt->fetchColumn(); 

        if($valid) { 
          $success = true; 
        } 

        $con = null; 
        return $success; 
       }catch (PDOException $e) { 
         echo $e->getMessage(); 
         return $success; 
       } 
} 

public function signup() { 
    $correct = false; 
    try { 
       $con = new PDO(db_dsn, server_user, server_pass); 
       $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
       $sql = "INSERT INTO gs_users_table (display_name, email, password) VALUES (:display_name, :email, :password)"; 
       $stmt = $con->prepare($sql); 
       $stmt->bindValue("display_name", $this->display_name, PDO::PARAM_STR); 
       $stmt->bindValue("email", $this->email, PDO::PARAM_STR); 
       $stmt->bindValue("password", hash("sha512", $this->password . $this->salt), PDO::PARAM_STR); 
       $stmt->execute(); 
       return "Sign Up Successful <br/> <a href='login.php'>Login Now!</a>"; 
     }catch(PDOException $e) { 
       return $e->getMessage(); 
     } 
} 
} 


?> 
+0

nedir veritabanında display_name' ?? – Saty

+0

DB'de display_name'in tam özellikleri nelerdir? –

+0

Lütfen "gs_users_table" tablosunun tanımı için bize ulaştırın. –

cevap

0

, bu sesler:

$valid = $stmt->fetchColumn(); 

if($valid) { 
    $success = true; 
} 

Dene: `tipi

$valid = $stmt->fetchAll(); 

if($valid) { 
    $success = true; 
    $this->display_name = $valid[0]['display_name']; 
} 
+0

Bunu 'fetchColumn()' ile de yapabilirsiniz, ancak tablo açıklamasını göndermediniz, böylece hangi tamsayı geçeceğimi bilmiyorum. – avip

+0

Tablo hakkında bilmek istediğiniz nedir? Sana verebilirim. – japjap

+0

Peki, öncelikle, yukarıdaki kod değişikliği işe yarıyor mu? :) – avip

İlgili konular