php
  • mysql
  • pdo
  • 2015-09-04 60 views 0 likes 
    0

    這是我通常會檢查空的結果:mysql_fetch_assoc如何使用PDO檢查mySQL中的某行是否爲空?

    不過,我使用的PDO爲客戶和本次登錄的功能,我想返回一些文字或數字或布爾說連續被發現或不。

    public function Login ($email,$password) 
    { 
        $sqlQuery="SELECT * FROM db_user WHERE email= '".$email."' AND password='".$password." '"; 
        $statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO statement 
        $statement -> execute(); 
    
        $dataSet= []; 
        if(mysql_num_rows($statement) == 1){ 
        echo 'login true'; 
        } else { 
        echo 'login false'; 
        } 
    
    +0

    所以這個工程?或不 ? – 2015-09-04 06:37:18

    +0

    使用'$ count = $ statement-> num_rows;'而不是'mysql_num_rows' – Saty

    +1

    嘗試使用'COUNT(*)'語句代替。您不能同時使用'PDO'和'mysql'。那麼你可以,但這將是愚蠢的......也並非如你所想的那樣。 – Rasclatt

    回答

    1

    兩個其他的答案基本上是不能接受的。
    而不是因爲他們缺乏潔淨,而是因爲他們是非常危險的

    public function Login ($email,$password) 
    { 
        $sql="SELECT 1 FROM db_user WHERE email=? AND password=?"; 
        $stmt = $this->_dbHandle->prepare($sql); 
        $statement -> execute([$email, $password]); 
        return $stmt->fetchColumn(); 
    } 
    

    你應該使用預處理語句,而不僅僅是模仿他們。

    +1

    on'$ statement - > execute($ email,$ password);' 'execute'方法需要一個數組而不是字符串。 它應該像'$ statement - > execute(array($ email,$ password));' – 6339

    +0

    很久沒見過@你的常識......雖然你被禁止 – TheBlackBenzKid

    0
    $sqlQuery="SELECT * FROM db_user WHERE email= '".$email."' AND password='".$password." '"; 
        $statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO statement 
        $statement -> execute(); 
        $rows = $statement ->fetch(PDO::FETCH_ASSOC); 
    
        if(! $rows) 
        { 
        die('Empty Records'); 
        } 
    
    +0

    這看起來很乾淨。 – TheBlackBenzKid

    0
    $sqlQuery= "SELECT * FROM db_user WHERE email= ? AND password= ?"; 
        $statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO 
    
        // pass parameter to tackle [SQL Injection][1] 
        $stmt->execute(array($email, $password)); 
    
        $result = $stmt->fetch(); 
        if($result) { 
         echo "login true"; 
        }else{ 
         echo "login false"; 
        } 
    
    +0

    [**不要**使用try catch進行錯誤報告](http://phpdelusions.net/try-catch) –

    +0

    @YourCommonSense我永遠不知道這一點。編輯我的答案。 – 6339

    相關問題