Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ MySQL

Napisany przez: Zenobiusz 17.09.2019, 12:07:11

Witam.

Mam Pole 'ID' ktore ma się składać z numeru i liczb ze średnikiem np. 98 - A056B i problem jest w tym że zamiast liter zapisuje mi do bazy danych liczby. Czy wiecie jaki TYP użyć ? Używam AI oraz UNSIGNED ZEROFILL bo w numerach na początku występują kody rozpoczynjące się od zera np 00 - AF456

Napisany przez: trueblue 17.09.2019, 12:33:00

Na początku występuje liczba, ale potem już nie. Tak więc na pewno nie typ INT i nie AI, bo autoinkrement nie zbuduje Ci ciągu w takiej postaci.
Czyli typ CHAR lub VARCHAR w zależności czy długość ciągu jest stała. A dodatkowo indeks unikalny.

Napisany przez: Tomplus 17.09.2019, 12:53:22

Możesz nam powiedzieć jaki typ jest teraz?
Autoincrement używa się do typów INT a nie stringów.
jeżelu chcesz sekwencję to ustaw sobie dwie kolumny gdzie jedna to ID z AI, a druga string podczas zapytania użyj CONCAT(`id`, '-', `drugaInformacja`)

Napisany przez: Zenobiusz 18.09.2019, 09:24:16

CHAR i VARCHAR przyjmuje ale niestety nie zapisuje liter. Nadal przyjmuje tylko liczby.
AT oczywiście odhaczone.

Napisany przez: trueblue 18.09.2019, 09:30:27

A jaką długość pola ustawiłeś w przypadku CHAR/VARCHAR?

Napisany przez: Zenobiusz 18.09.2019, 10:00:36

Robiłem na 12 i 250. Bez skutku. Wpisuje np do pola AAAA to zapisuje mi to jako 0.

Napisany przez: trueblue 18.09.2019, 10:43:31

Pokaż wynik z:
SHOW CREATE TABLE tu_nazwa_tabeli;
albo:
DESC tu_nazwa_tabeli;

Wartość wprowadzasz bezpośrednio do bazy czy poprzez jakiś skrypt/formularz?

Napisany przez: viking 18.09.2019, 11:21:48

Wyraźnie widać że jest gdzieś rzutowanie na int.

Napisany przez: Zenobiusz 18.09.2019, 11:39:53

Wprowadzam przez skrypt ale przez baze czyli bezpośrednio wychodzi tak samo.

Napisany przez: trueblue 18.09.2019, 11:41:14

A byłbyś jednak uprzejmy pokazać wyniki tych dwóch zapytań z mojego posta wyżej?

Napisany przez: Zenobiusz 18.09.2019, 12:06:09

Przepraszam. Jednak z bazy danych jest poprawnie problem leży na skrypcie. PRzez skrypt do bazy danych przechodzi przez 0 natomiast przez baze danych wpisuje się poprawnie. Wiec teraz jaki mam wkleić problem ?

Napisany przez: trueblue 18.09.2019, 12:11:07

Sprawdź po kolei przez jakie miejsca w kodzie przechodzi zmienna (do momentu INSERT), która przechowuje tą wartość.

Napisany przez: Zenobiusz 18.09.2019, 12:12:54

Viking miałeś racje. Problem leżał na int a dokładnie w skrypcie. Poprawiłem już i wszystko działa. Dziękuje wszystkim za zaangażowanie i dla każdego polecą dziękówki. Pozdrawiam.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)