• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak ustawić domyślne zdjęcie w kolumnie avatar w MySQL ?

Object Storage Arubacloud
+1 głos
143 wizyt
pytanie zadane 22 lutego 2021 w SQL, bazy danych przez mat19 Obywatel (1,580 p.)

Mam taki problem z włożeniem zdjęcia do bazy danych. Podczas rejestracji użytkownik wprowadza dane, i może też wybrać zdjęcie które będzie awatarem, ale pole nie jest obowiązkowe. W bazie danych ustawiłem że domyślne kolumna avatar ma wartość avatar.jpg. I w tym miejscu nie wiem dlaczego, ale jeżeli użytkownik nie wybierze avataru to kolumna jest pusta, a przeciez powinna  byc wartość domyślna avatar.jpg. Może wie ktoś jak naprawić ten błąd ?

CREATE TABLE `user` (
  `id` int(11) NOT NULL primary key AUTO_INCREMENT,
 `login` varchar(20) not null unique,
`password` tinytext not null,
`first_name` varchar(30) not null,
`last_name` varchar(40) not null,
`email` varchar(40) not null,
`avatar` varchar(400) not null default 'avatar.jpg',
`number_phone` varchar(9) not null,
`birth_date` date not null,
`access` varchar(5) not null default 'user',
`gender` varchar(1) not null
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

 

2 odpowiedzi

+2 głosów
odpowiedź 22 lutego 2021 przez Wiciorny Ekspert (270,190 p.)

a skąd ma MySQL wiedzieć czym jest domyślnie avatar.jpg, robisz tzw redundancje nadmiarowość, skoro masz default wartość to nie potrzebujesz not null stąd ten problem. Bo jeśli stosujesz not null to default bedzie ignorowany w tej kolejności, gdyż jeśli nie podajemy wartości - to wartość przyjmie default, ale u Ciebie jest not null , wiec wymuszasz podanie wartości, stąd default nigdy sie nie wykonuje 

Więc w skrócie, albo stosujesz not null i wymuszasz wtedy wprowadzenie wartości ( mając not null nie ustawisz default, bo NOT NULL - narzuca wprowadzenie wartości stąd default-  nigdy nie wykona sie ta operacja ), albo decydujesz sie na możliwość nie wprowadzenia wartości i dajesz defaultowoą na wybrana 

komentarz 23 lutego 2021 przez mat19 Obywatel (1,580 p.)
Usunęłem not null i dalej to samo. Może błąd leży w php ?
komentarz 24 lutego 2021 przez Wiciorny Ekspert (270,190 p.)
wątpie, chociaż nie wiem jak wygląda operacja w PHP, generalnie :
 upewnij się, że twój skrypt php dostarcza null value(nie jest pusty) lub nie specyfikuj the value apodczas wstawiania / modyfikacji, aby twój mysql wiedział, że musi użyć wartości domyślnej.

Jeśli pole pozostawiasz puste, to mySQL nie traktuje tego jako niewprowadzenie wartości, a wartość pusta... czyli "empty" a empty varchar jest varcharem
+1 głos
odpowiedź 23 lutego 2021 przez VBService Ekspert (253,340 p.)
edycja 23 lutego 2021 przez VBService

Dokładnie jest tak jak napisał @Wiciorny, moje "trzy grosze"  wink

Insert row with only default values in MySQL

CREATE TABLE `user` (
  `id` int(11) NOT NULL primary key AUTO_INCREMENT,
  `login` varchar(20) not null unique,
  `password` tinytext not null,
  `first_name` varchar(30) not null,
  `last_name` varchar(40) not null,
  `email` varchar(40) not null,
  `avatar` varchar(400) default 'avatar.jpg', # taki zapis
  `number_phone` varchar(9) not null,
  `birth_date` date not null,
  `access` varchar(5) default 'user', # tu teSZ ;-)
  `gender` varchar(1) not null
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

wtedy w INSERT-cie pomijasz pole gdzie jest wartość DEFAULT - voilà  wink

INSERT INTO `user`(`id`, `login`, `password`, `first_name`, `last_name`, `email`, `number_phone`, `birth_date`, `gender`)
  VALUES (null, 'login-1', 'password-1', 'first_name-1', 'last_name-1', 'email-1', '12345678', '0000-00-00', 'k');


INSERT INTO `user`(`id`, `login`, `password`, `first_name`, `last_name`, `email`, `number_phone`, `birth_date`, `gender`)
  VALUES (null, 'login-2', 'password-2', 'first_name-2', 'last_name-2', 'email-2', '12345678', '0000-00-00', 'm');

Podobne pytania

0 głosów
1 odpowiedź 343 wizyt
+14 głosów
7 odpowiedzi 741 wizyt
pytanie zadane 29 listopada 2015 w Nasze projekty przez Tnifey Pasjonat (24,190 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...