Преобразование 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 ...
Другие вопросы по тегам