Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Булевы значения mySQL
NierRa  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Gamer
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 192
Пользователь №: 32988
На форуме: 4 года, 4 месяца, 19 дней
Карма: 1




Булевые значения в БД mySQL хранятся в виде TINYINT(1)
При выводе с БД и обработке мы получаем типы переменных int(1) и int(0)

Такой тип переменных удовлетворяет запросам if($a) и if(!$a) но все же вопрос...
Тип данных boolean при сохранении в БД конвертируется в TINYINT(1).
Таким образом в phpmyadmin можно руками ввести число выше 1. Это не так страшно, как неудобно.
Есть ли возможность строго указать логический тип данных, чтобы нельзя было вводить никаких значений кроме 0 и 1, и чтобы с базы приходило не int(1), int(0), а bool(true), bool(false)


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22688
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 25 дней
Карма: 599




а чем тебе 1 и 0 не подходит? Это логические правда и ложь!
Для перечисления 1 или 0 - enum, но это не верно, так как правильнее всего контролировать вхождение данных своим скриптом.

Это выглядит так: у меня в базе: 1 и 0, а я хочу, чтобы хранились мужчина и женщина... ну нафига?! 1 - мужчина, 0 - женщина, всё итак интуитивно понятно и меньше места занимает.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
NierRa  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Gamer
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 192
Пользователь №: 32988
На форуме: 4 года, 4 месяца, 19 дней
Карма: 1




Цитата
а чем тебе 1 и 0 не подходит? Это логические правда и ложь!

Подходит, но есть два нюанса
1. Не важно как и зачем, но кроме значений 0 и 1 можно спокойно занести в бд 2,3,4 и.т.д. Если в поле с типом int попытаться занести строковое значение - это выдаст еррор и данные в таблицу не занесутся. В принципе наплевать, но выглядит уже некрасиво. Я сторонник красивого кода и красивых решений. (Как бы глупо это не звучало)

2.
mysql_query("UPDATE `field` SET `row` = false");
занесет в БД ноль, что и нужно. Однако
mysql_query("UPDATE `field` SET `row` = true");
ничего не изменит и проверка на mysql_affected_rows ничего не покажет. Ноль в БД не изменится на еденицу

Как по мне запрос вида = true/false нагляднее, чем = 1/0. Хотя может это со временем перерастуUPDATE `field` SET `row` = false


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22688
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 25 дней
Карма: 599




0 = false, 1 = true. Ты это должен понять с самого начала.
Чтобы в БД не попало число отличное от 0 и 1 - у тебя в руках твой php скрипт, где ты осуществишь фильтрацию входящих данных.
Ошибку ловить надо не после того, как произошло соединение с БД, после отправлен кривой запрос, который вернул ошибку, а ещё до того, как ты отправишь данные, то есть на уровне ПХП. Раньше поймал - меньше работы скрипту, быстрее работает.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TranceIT  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



...Один я одинаковый...
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1731
Пользователь №: 19760
На форуме: 7 лет, 16 дней
Карма: 58




Цитата (NierRa @ 4.09.2012 - 00:39)
1. Не важно как и зачем, но кроме значений 0 и 1 можно спокойно занести в бд 2,3,4 и.т.д.

Можно, но зачем? В правильно написанном приложении такого не случится.

Цитата (NierRa @ 4.09.2012 - 00:39)
Как по мне запрос вида = true/false нагляднее, чем = 1/0.


inpost, правильно про место говорит.
В небольших базах расход не сильно заметен. Я сейчас работаю с базой, которая до оптимизации занимала 450гб. После замены true/false на 1/0 размер уменьшился чуть больше, чем в полтора раза.


--------------------
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
NierRa  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Gamer
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 192
Пользователь №: 32988
На форуме: 4 года, 4 месяца, 19 дней
Карма: 1




Всем спасибо за советы

Цитата
0 = false, 1 = true. Ты это должен понять с самого начала.

С этим проблем нет. Ночью с закрытыми глазами, на пьяную голову, во время секса, падая с парашутом расскажу smile.gif

PS. Просто возник вопрос и найти ответ на него кроме как спросив у знающих людей не представляется возможным


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









(bool)$var
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 14 дней
Карма: 111




возьми постгрес у них там есть тип поля boolean


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25980
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 18 дней
Карма: 725

Не курю:
1 год, 2 месяца, 5 дней


$a = (bool)1;
var_dump($a); //bool(true)
$a = (bool)0;
var_dump($a);//bool(false)




--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11782
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 9 дней
Карма: 428

Трезвый :
7 лет, 3 месяца, 9 дней


user posted image


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса