Чтобы иметь дело с значениями "Boolean" в PHP и MySQL

В настоящее время я использую Tinyint(1) для указания значений Boolean в моих базах MySQL, что мне действительно не нравится. Итак, как я мог хранить и извлекать значения Boolean в моих MySQL базах данных через PHP?

Как использовать его в предложении WHERE и как правильно присвоить значение в INSERT, UPDATE запросах?

Когда я вернусь к PHP, это TRUE, TRUE или просто 1, если я собираюсь проверить это с помощью ===?

Также у вас возникли проблемы при переходе с Tinyint(1) на Boolean?

Спасибо заранее.:)

Update:

Я знаю, что Tinyint(1) совпадает с Boolean, однако я хочу работать с типом данных Boolean вместо Tinyint(1). Вот почему я задаю вопрос.

Ответ 1

У MySQL нет булева типа данных. Tinyint (1) довольно близко. Работа с этим в PHP проста.

If (1) echo 'true'; // is the same as if (true)
// Just as
if (0) echo 'false'; // is the same as if (false)

И если вы действительно хотите логическое значение, вы можете сделать

// $mysql_data is tinyint value from db
$boolean = $mysql_data ? true : false;
// Now you have your boolean as $boolean

Ответ 2

С булевыми, не используйте === FALSE - значение уже имеет значение boolean (если функция не требует использования ===, например strpos()). Значение booleanish - это технически целое число, но PHP - это динамический язык, поэтому это не проблема.

Рассмотрим функцию preg_match() - она ​​возвращает количество совпадений (целое число).

Вы предпочли бы написать это?

if (preg_match('/\bregexp?\b/', $variable) === 1)

Или что?

if (preg_match('/\bregexp?\b/', $variable))

Очевидно, что путь без явного === 1 лучше. Вы спрашиваете, совпадает ли это, если он имеет 0 совпадений. Кроме того, если вы считаете, что === 1 безопаснее, почему бы не сделать === 1 === TRUE?

Конечно, возможно преобразовать значения в булевы, используя (bool) или !!.

Кроме того, на некоторых языках, таких как C или Perl, нет разницы между булерами и числами. Он просто работает.