2015-05-30 102 views
0

我有一個表只有一行稱爲我的數據庫中的用戶與電子郵件和mobile_number,因爲它是columns.My行的mobile_number列值爲9866163987.當我試圖選擇此移動數值我的準備語句返回0 rows.Here是我的代碼。在PHP準備語句返回0行

if($this->checkExists("email",$_POST["registerEmail"])) 
{ 
    --some code-- 
} 
if($this->checkExists("mobile_number",$_POST["registerMobileNumber"])) 
{ 
    --some code-- 
} 
private function checkExists($field,$value) 
{ 
    include("includes/connection.php"); 
    $sql = "SELECT $field FROM users WHERE $field=:value";  
    $prepare = $connection->prepare($sql); 
    $prepare->bindParam(":value",$value,PDO::PARAM_STR); 
    try 
    { 
     $prepare->execute(); 
    }  
    catch(PDOException $e) 
    {   
     die($e->getMessage()); 
    } 
    $count = count($prepare->fetchAll()); 
    echo $count."<br />"; 
    if($count == 1) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

對於電子郵件它工作正常,返回一行,但對於mobile_number它返回0行?做什麼?

+1

檢查'$ value'的實際值以查看輸入是否有意義。也許這個值發佈不正確。或者它發佈的很好,但它恰好是一個與數據庫中的任何內容不匹配的數字。 – GolezTrol

+0

謝謝你的建議。我檢查了我的數據庫。它正是你說的.mismatching的值。但問題是我插入9866163987,但在數據庫中的其他值2147483647被插入。怎麼辦? –

+0

您是否將手機號碼錶示爲int?聽起來就像你遇到了一個整數溢出問題。嘗試將列更改爲CHAR(10)。你在這一點上堅持的正確價值。 – keelerm

回答