Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Kilka zapytań
pala2222
post 17.04.2010, 14:35:55
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


witam
Jakiś czas temu stworzyłem temat w którym dostałem odpowiedzi na moje pytania, ale został on skasowany i nie pamiętam co tam było.

jak zapisać w PHP aby stworzyć tabele z polem w którym by był automatycznie dodawany czas dodania rekordu?
Go to the top of the page
+Quote Post
blooregard
post 17.04.2010, 15:12:18
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Pole w bazie musi mieć ustawione NOT NULL DEFAULT 'to co ma byc tam dodawane'


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
pala2222
post 17.04.2010, 20:02:12
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


Dziękuje

Czy jest możliwość aby po dodaniu rekordu w zwrocie dostać jego id?

np
  1. $zapytanie="dodanie jakiegoś rekordu"
  2. $wynik = mysql_query($zapytanie);

i żeby w zmiennej wynik znajdował się jego id.

Jest mi to potrzebne bo będę chciał połączyć kilka tabeli ze sobą.
przynależnością, że tab2 należy do tab2 i będzie posiadało w jakieś tabeli jego id
myślałem nad tym http://www.kess.snug.pl/?sid=10&pid=50
bo to pokazuje ostatnio dodany rekord(zgadza się?), ale jeśli się coś zatnie i będzie większy ruch dodawania rekordów to mogę uzyskać czego innego id
Może macie jakiś inny pomysł

Ten post edytował pala2222 17.04.2010, 20:06:45
Go to the top of the page
+Quote Post
Mchl
post 17.04.2010, 20:08:13
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


http://pl.php.net/manual/en/function.mysql-insert-id.php
Go to the top of the page
+Quote Post
pala2222
post 17.04.2010, 20:25:16
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


znalazłem tafunkcje, ale czy ona jest bezpieczna? bo ona pokazuje ostatnio dodany rekord
bo jeżeli sporo osób dodaje rekordów tym, samym czasie i jeśli coś się przytnie lub coś podobnego, to w tedy uzyskam nie swój id
Go to the top of the page
+Quote Post
Mchl
post 18.04.2010, 13:16:56
Post #6





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Uzyskasz zawsze ID ostatniego rekordu wstawionego w bieżącym połączeniu. Uważaj tylko na INESRTy z wieloma wierszami, bo wtedy dostaniesz id pierwszego wstawionego wiersza.
Go to the top of the page
+Quote Post
pala2222
post 18.04.2010, 18:20:58
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


Cytat(Mchl @ 18.04.2010, 14:16:56 ) *
Uzyskasz zawsze ID ostatniego rekordu wstawionego w bieżącym połączeniu.wtedy dostaniesz id pierwszego wstawionego wiersza.

Możesz jaśniej?
lub podaj najlepiej jakiś przykład
Go to the top of the page
+Quote Post
Mchl
post 18.04.2010, 21:13:54
Post #8





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


http://dev.mysql.com/doc/refman/5.1/en/inf..._last-insert-id
Go to the top of the page
+Quote Post
pala2222
post 19.04.2010, 18:24:46
Post #9





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


Jest możliwość, aby zapisać zapytanie sql przez naku ' przy dodawaniu rekordu, ponieważ mam problem nie związany z php.
"INSERT INTO `sql` (`id`, `nazwa`) VALUES (NULL,'chodzi o tą cześć')"
Go to the top of the page
+Quote Post
Mchl
post 19.04.2010, 18:59:52
Post #10





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Co?
Go to the top of the page
+Quote Post
pala2222
post 19.04.2010, 19:26:51
Post #11





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


ok już wiem w czym problem(chyba)
jak zrobić, aby dla jednej zmiennej było wyłączone Magic_quotes
bo nie chce aby do znaku ' było dodawane \ czyli \'

bo mam problem bo jak przekazuję zmienną do post to dodaje mi \ przed ' a ja tego nie chce.
to co mam zrobić?

Ten post edytował pala2222 19.04.2010, 19:35:42
Go to the top of the page
+Quote Post
Mchl
post 19.04.2010, 19:37:47
Post #12





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Kod
if(get_magic_quotes_gpc()) {
  $zmienna = stripslashes($_POST['zmienna']);
} else {
  $zmienna = $_POST['zmienna'];
}
$zmienna = mysql_real_escape_string($zmienna);
Go to the top of the page
+Quote Post
pala2222
post 19.04.2010, 20:03:42
Post #13





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


wielkie dzięki

to co podałeś to całkowicie nie działa
zadziałało jak przez przypadek usunąłem tą linijkę
  1. $zmienna = mysql_real_escape_string($zmienna);

to jest coś ważnego?

byś mógł dodać jakiś krotki komentarz do warunku tego ifa co on robi

Ten post edytował pala2222 19.04.2010, 20:42:09
Go to the top of the page
+Quote Post
Mchl
post 19.04.2010, 20:33:22
Post #14





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


get_magic_quotes_gpc() sprawdza, czy magic_quotes są włączone. Jeśli tak, to stripslashes() usuwane są wszystkie dodane przez nie \.
Na koniec mysql_real_escape_string poprawnie zabezpiecza wszelkie znaki specjalne.

I teraz pytani: co takiego chcesz zrobić, że mysql_real_escape_string Ci przeszkadza? Jak wygląda Twoje zapytanie i co do niego chcesz wstawić?

Ten post edytował Mchl 19.04.2010, 20:33:50
Go to the top of the page
+Quote Post
pala2222
post 19.04.2010, 20:46:05
Post #15





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


przesyłam przez post coś takiego
  1. $a='kotek','167','4534', 'bla') '


i to wklejam
  1. $zapytanie="INSERT INTO `sql` (`id`, `czas`,`nazwa`,`numer`,`kod`,`liczba`) VALUES (NULL,NULL,".$a;

no i
  1. mysql_query($zapytanie);


i bez tej ostatniej linijki działa, a z dodaje \
Go to the top of the page
+Quote Post
Mchl
post 19.04.2010, 20:58:38
Post #16





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Bardzo niedobry pomysł z punktu widzenia bezpieczeństwa. Powinieneś przesłać te wartości albo jako osobne zmienne, albo w tablicy, i w samym PHP odpowiednio je obrobić.
Go to the top of the page
+Quote Post
pala2222
post 19.04.2010, 21:19:13
Post #17





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


bo ja to wysyłam przez curl w c++
i zależy mi żeby to szło jak najszybciej, mam tam takich zmiennych z 40 i gdybym każde z osobna tak wysyłał to zajmie to dużo więcej czasu w porównaniu z tym jak to umieśćże w jednej zmiennej POST i potem to ewentualnie podzielę.
masz może jakiś pomysł, żeby to jakoś jakoś zabezpieczyć bez przesyłania tego wszystkiego z osobna?
tam nie będzie jakiś tajnych danych ale nie chce, zęby ktoś narobił mi szkód
Go to the top of the page
+Quote Post
Mchl
post 19.04.2010, 22:13:55
Post #18





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


A dlaczego miałoby być wolniej? Jedna "duża" zmienna, czy 40 "małych" i tak wszystkie idą w ramach jednego żądania...

Jak już chcesz w jednej, wysyłaj samą listę przedzieloną przecinkami.

Kod
//$_POST['zmienna'] = "kotek,167,4534, bla"

if(get_magic_quotes_gpc()) {
  $zmienna = stripslashes($_POST['zmienna']);
} else {
  $zmienna = $_POST['zmienna'];
}
$vars = explode(',',$zmienna);

foreach($vars AS $key => $value) {
  $vars['$key'] = "'".mysql_real_escape_string($value)."'";
}

$values = implode(',',$vars);

$sql = "INSERT INTO `sql` (`nazwa`,`numer`,`kod`,`liczba`) VALUES ($values)";
Go to the top of the page
+Quote Post
pala2222
post 20.04.2010, 15:55:43
Post #19





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.03.2009

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


nie za bardzo to działa bo nie dodaje tych znaków prim

Ten post edytował pala2222 20.04.2010, 16:08:23
Go to the top of the page
+Quote Post
Mchl
post 20.04.2010, 15:58:22
Post #20





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Masz ustawione wyświetlanie błędów?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:34