php中的预处理语句返回0行

时间:2015-05-30 01:51:16

标签: php

我的数据库只有一行在我的数据库中称为用户,其中包含email和mobile_number作为列。我的行的mobile_number列值为9866163987.当我尝试选择此移动数字值时,我的预准备语句返回0 rows.Here是我的代码。

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 个答案:

答案 0 :(得分:0)

您的整数被截断,因为它超过了int的32位限制。 (正如@Mike Stotts在评论中所说)

请参阅What is the size of column of int(11) in mysql in bytes?

您可以使用字符串代替字符串或使用更大的字符串。

注意:如果您打算使用bigint,则应考虑添加store_result();在bind_result之前防止内存耗尽: 请参阅:PHP mysql_stmt::fetch() gives PHP Fatal error memory exhausted