2015-05-30 4 views
0

У меня есть таблица с одной строкой, называемой пользователями в моей базе данных с электронной почтой и номером mobile_number, как и в столбцах. Моя строка имеет это значение столбца номер_собрания как 9866163987. Когда я пытаюсь выбрать этот мобильный числовое значение мой подготовленный оператор возвращает 0 строк. Вот мой код.Подготовленный оператор в 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

спасибо за ваше предложение. Я проверил мою базу данных. Это именно то, что вы сказали. Несоблюдение значений. Но проблема в том, что я вставляю 9866163987, но в базу данных добавляется другое значение 2147483647. Что делать ??? –

+0

Вы представляете номер мобильного телефона как int? Похоже, вы столкнулись с проблемой переполнения целых чисел. Попробуйте изменить столбец на CHAR (10). Правильное значение, которое вы сохраняете в этой точке. – keelerm

ответ

0

Ваш межсектор усекается, потому что он превышает 32-битный предел int. (Как сказал Stotts в @ Mike комментариях)

см What is the size of column of int(11) in mysql in bytes?

Вы можете использовать строку вместо или использовать что-то большее, как BIGINT.

Примечание: если вы планируете использовать bigint, вам следует рассмотреть возможность добавления store_result(); перед вашим bind_result для предотвращения исчерпания памяти: См.: PHP mysql_stmt::fetch() gives PHP Fatal error memory exhausted

Смежные вопросы