2015-11-08 4 views
0

Я обнаружил, что ?year=2015 работает на моем сайте, так же, ?year=2015sjkhdkfzgsfkzgsk делает, когда этот «год» сравнивается с целым значением из базы данных (тип MySQL YEAR), как-то так :php - сравнить годы с разными типами данных

$year = Input::get('year'); 
$dbyear = Pic::find($id)->value('year'); 
if($year == $dbyear){ 
    //.. 
} 

, потому что это, кажется, возвращает истину:

var_dump(2015 == '2015abcdefg34748fhhdfgxfgfg'); 

Является ли это нормальным или, возможно, ошибка? Как лучше сравнить эти значения? Теперь я делаю:

$year = substr(Input::get('year'),0,4); 
+1

Это [документированы] (http://php.net/manual/en/language.types. string.php # language.types.string.conversion): * «Значение задается начальной частью строки. Если строка начинается с действительных числовых данных, это будет используемое значение.» * (через [операторы сравнения ] (http://php.net/manual/en/language.operators.comparison.php)). – Kenney

ответ

0

Вы могли бы заставить аргумент типа string данных:

$year = strval(Input::get('year')); 
Смежные вопросы