Преобразование TINYINT(1) в строку
Я хочу преобразовать TINYINT(1)
значение в строку. Скажем, если оплаченная подписка равна 1 (или истине), то результатом будет "да", когда я получу значение из моей базы данных MySQL в мой .php
файл. Если подписка paid = 0
(или неверно), результатом будет "нет".
Есть ли способ конвертировать TINYINT(1)
значение строки, содержащей мои слова выбора?
Прошу прощения, если я косвенный или если требуется дополнительная информация о проблеме
3 ответа
Учитывая, что MySQL не предоставляет какой-либо достойный механизм для предотвращения вставки -1
или же 33
в TINYINT
столбец, я бы просто проверить на ноль / не ноль:
SELECT CASE
WHEN paid<>0 THEN 'Yes'
WHEN paid=0 THEN 'No'
ELSE 'Unknown'
END is_paid
FROM suscription
Вопрос также помечен как PHP. Я думаю, что чистее использовать как можно больше нативных типов:
if (is_null($row['paid']) {
$paid = null;
}else{
$paid = $row['paid']!=0;
}
Получение правильной строки при отображении должно быть простым.
Вы можете использовать IF
:
SELECT IF(`column` = 1, 'yes', 'no') FROM `table_name`
Или же:
SELECT IF(`column` = 0, 'no', 'yes') FROM `table_name`
Или вы можете использовать <
или же >
и т.д. на основании данных.
Вы можете сделать это в PHP:
$number = 1; // or 0 - basically your MySQL variable
$word = $number ? "yes" : "no";
В качестве альтернативы, сделайте это в вашем запросе MySQL:
SELECT IF(`column_name` = 1, 'yes', 'no') FROM ...