Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem ze skryptem wpisujacym do bazy liczbe o 1 wieksza
xiveris
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


witam,
mam pewien problem na mojej stronie, otoz chcialbym aby wartosc memb_guid z kazda nowa operacja tego skryptu do bazy wprowadzala o 1 wyzsza wartosc niz jest obecnie w bazie, probowalem juz roznych sposobow jednak nie moge tego rozgryzc
probowalem to robic min na zmiennych, przykladowo:
$subquery = mssql_query('SELECT MAX(MEMB_GUID) + 1 FROM MEMB_INFO', $link);
$result = mssql_result($subquery,0,0);
pozniej zamiast 1 wkladam zmienna result,

probowalem takze selecta wkladac bezposrednio do proceduty, jednak ciagle nie dziala.
Dodam iz w bazie zmienna memb_guid jest typu INT oraz jest kluczem glownym, dopiero ppo zdjeciu z niej rekordy kolejne sie wpisuja, ale co to ma za sens jesli wszedzie jest 1. Jesli ktos potrafilby rozgryzc ten przypadek bylbym bardzo wdzieczny.

Kod
mssql_query("INSERT INTO VI_CURR_INFO (ends_days,chek_code,used_time,memb___id,memb_name ,[b]memb_guid[/b],sno__numb,Bill_S
ection,Bill_value,Bill_Hour,Surplus_Point,Surplus_ Minute,Increase_Days ) VALUES ('20055','1',1234,'$login','$login',[b]1[/b],'7','6','3', '6','6',getdate(),'0' )") or die('error, account exists');

mssql_query("SET IDENTITY_INSERT MEMB_INFO ON INSERT INTO MEMB_INFO ([b]memb_guid[/b],memb___id,memb__pwd,memb_name,sno__numb ,post_code,addr_info,addr_deta,tel__numb,mail_addr,phon_numb,fpas_ques,fpas_answ
job__code,appl_days,modi_days,out__days,true_days,mail_chek,bloc_code,ctl1_co de) VALUES ('[b]1[/b]','$login','$pw','$name', '1','1234','11111','personalid','12343','$email',' $email','$prq','$pra','1',getdate(),getdate(),getd ate(),getdate(),'1','0','1')") or die('error, query failed');


Za wszelkie rady z gory dziekuje

Ten post edytował xiveris 30.07.2009, 11:21:45
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Daj to pole jako primary key i daj mu auto_increment


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
xiveris
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Mam ustawione obecnie tak:

zmiana na primary key podowuje tylko blad informujacy o tym iz probuje sie wprowadzic taka sama wartosc w pole gdzie nie mozna tego robic czyli z kluczem
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(xiveris @ 30.07.2009, 11:51:51 ) *
Mam ustawione obecnie tak:

zmiana na primary key podowuje tylko blad informujacy o tym iz probuje sie wprowadzic taka sama wartosc w pole gdzie nie mozna tego robic czyli z kluczem


Sorki moje niedopatrzenie, używasz mssql! Zakręciłem się i przeczytałem mysql... Przepraszam za wprowadzenie w błąd.

P.S. Czemu używasz tego sh*tu?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
xiveris
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Nie mam wyboru musze SQL bo nic innego nie wspiera tego smile.gif
Od strony skryptu zatem trzeba by cos napewno zrobic aby wpisywalo wlasciwie? jakies rady?
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie wiem jak to jest w mssql, możesz pobrać najwyższe memb_guid dodać jeden i wrzucić to do zapytania, które dodaje rekord do bazy.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
xiveris
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Chce wlasnie cos takiego zrobic tylko ze za kazdym razem mi jakis blad pojawia sie.
Go to the top of the page
+Quote Post
Fifi209
post
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie wiem czy jest ale powinna być funkcja count, gdybyś ją tak zastosował na memb_guid winksmiley.jpg i potem do tego co zwróci serwer dodał jeden?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
krowal
post
Post #9





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


Po pierwsze powinno to być załatwione przez autoincrement, a co do Twojego postu fifi209 to nie count ale max powinno być zastosowane winksmiley.jpg


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Fifi209
post
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(krowal @ 30.07.2009, 13:05:51 ) *
Po pierwsze powinno to być załatwione przez autoincrement, a co do Twojego postu fifi209 to nie count ale max powinno być zastosowane winksmiley.jpg


Skoro mu auto_increment nie działa o którym pisałem wcześniej, max o którym on pisał nie działa...to dałem propozycję z count


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
krowal
post
Post #11





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


No to wyobraź sobie coś takiego: są sobie trzy rekordy:
id: 1
id: 2
id: 3

usuwasz id:2, zostaje:
id: 1
id: 3

robisz count(id) -> otrzymujesz 2, dodajesz 1 i wychodzi Ci że nowy rekord powinien mieć id:3 i wychodzi coś takiego:
id:1
id:3
id:3

chyba że masz unique na tym polu, ale wtedy nie dodasz go w ogóle smile.gif


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
xiveris
post
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Mozecie mi napisac jakby ten skrypt mial w takim razie wygladac aby dzialal jak nalezy?
Go to the top of the page
+Quote Post
Fifi209
post
Post #13





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(xiveris @ 30.07.2009, 13:53:37 ) *
Mozecie mi napisac jakby ten skrypt mial w takim razie wygladac aby dzialal jak nalezy?


Pole to dajesz jako auto_increment i primary key winksmiley.jpg i po sprawie.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
xiveris
post
Post #14





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


gdzie mozna ustawic to pole jako auto_increment?

Obecny blad jaki otrzymuje to podczas proby wywolania:
Kod
Warning: mssql_query() [function.mssql-query]: message: Violation of PRIMARY KEY constraint 'PK_MEMB_INFO_1'. Cannot insert duplicate key in object 'dbo.MEMB_INFO'.


Ten post edytował xiveris 30.07.2009, 14:27:42
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




IDENTITY załatwi sprawę (odpowiednik AUTO_INCREMENT z MySQL).

Cytat(fifi209 @ 30.07.2009, 13:12:20 ) *
P.S. Czemu używasz tego sh*tu?

Bez komentarza... sciana.gif
Go to the top of the page
+Quote Post
xiveris
post
Post #16





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


tylko ze sprawa jest taka iz mam juz istniejaca baze danych i nie chcialbym jej usuwac, zalezaloby mi aby dodac te opcje do istniejacej.
A opis przedstawiony powyzej wymaga usuniecia tabeli.

Moze zamiast kombinowac z baza macie jakis pomysl jakie polecenie wrzucic aby to ono wczytywalo sobie z bazy najwieksza wartosc i powiekszala ja o 1.
probowalem w miejsce 1 wrzucic takie cos:
Kod
select (select max(memb_guid) from MEMB_INFO)+1


niestety bezskutecznie gdyz blad wyskakuje iz nie mozna zapisac zmiennej typu var w miejsce gdzie powinna byc zmienna int

edit:
rozgryzlem problem w memb_info tabeli, problemem byl zapis:
Kod
SET IDENTITY_INSERT MEMB_INFO ON

po jego usunieciu, oraz usunieciu wpisow odnosnie memb_guid z inserta, baza sama sobie dodaje 1 do tego smile.gif co do 2 to postapilem podobnie smile.gif
dzieki wszystkim za udzielona pomoc i pozdrawiam

Ten post edytował xiveris 30.07.2009, 20:35:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:53