我的数据库只有一行在我的数据库中称为用户,其中包含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行?该怎么办?
答案 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