Ваш checkBool () совершенно прав, ИМХО, хотя есть проблема с результирующим кодом SQL.Вы можете использовать TRUE и FALSE , но вы должны знать, что они не являются строками:
Константы TRUE и FALSE оцениваются в 1 и 0 соответственно.Имена констант могут быть записаны в любом регистре букв.
Так, где это говорит:
"SELECT * FROM my_table WHERE male='".$_GET['male']."'"
... это должно сказать это:
'SELECT * FROM my_table WHERE male='.$_GET['male']
Было бы лучше, если бы checkBool()
было на самом деле convertToBool()
, и вы бы указали в своем запросе его значение результата, а не исходное значение $ _GET, но ваш код на самом деле не так.
Кстати, ям при условии, что вы используете тип BOOL столбца .Вот что говорится в руководстве:
Эти типы являются синонимами для TINYINT (1).Нулевое значение считается ложным.Ненулевые значения считаются истинными
Конечно, вам решать, использовать ли BOOL, ENUM, CHAR (1) или что-то еще, а также принять или нет 33
как синоним для TRUE;-)