Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kilka zapytań
pala2222
post
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
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 26)
blooregard
post
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'
Go to the top of the page
+Quote Post
pala2222
post
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
pala2222
post
Post #21





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

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


tak testuje na cba żeby u siebie czegoś nie skopać przez przypadek w bazie danych

ten twój kod nie wstawia znaków prim, znaczy wstawia ale w słowie bla i je podwaja czyli jest bla,'bla'

Ten post edytował pala2222 20.04.2010, 16:13:56
Go to the top of the page
+Quote Post
Mchl
post
Post #22





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

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


Zgadza się. Mój błąd:

Kod
foreach($vars AS $key => $value) {
  $vars[$key] = "'".mysql_real_escape_string($value)."'";
}
Go to the top of the page
+Quote Post
pala2222
post
Post #23





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

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


wielkie dzięki.
A byś mógł tak krótko napisać dlaczego tak sięrobi i jakie mogą być przesto kłopoty?
ale przecież to właściwie nic nie zmienia?
jak to działa w sposób bezpieczeństwa(bo programistyczne wiem jak działa ten kod)

mozęsz napisać na co jeszcze uważać?
z takich oczywistych rzeczy, zęby nie było żadnej wtopy
Go to the top of the page
+Quote Post
Mchl
post
Post #24





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

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


Wszystko przez to:
http://en.wikipedia.org/wiki/SQL_injection

magic_quotes miał być "cudownym" sposobem na zabezpieczenie się przed takimi atakami, ale z natury swojej takim być nie może (bo każdy system bazodanowy ma swoje własne znaki specjalne). Stąd też w nowszych wersjach PHP odchodzi się od stosowania magic_quotes. Nadal jednak na na wielu serwerach jest on włączony, stąd konieczność wykrywania i 'odczyniania' tego co zrobił (a robi tyle, że puszcza addslashes() na wszystkich zmiennych GET,POST,COOKIE i niektórych SERVER i FILES).

Jak już mamy zmienną w takiej postaci, w jakiej rzeczywiście wprowadził ją użytkownik, przepuszczamy ją przez właściwą funkcję zabezpieczającą. Dla MySQL jest to mysql_real_escape_string().
Go to the top of the page
+Quote Post
pala2222
post
Post #25





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

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


co by było lepsze
zrobienie dodatkowych kolumn dla części rekordów, czy umieszczenie danych w jednej dodatkowej kolumnie?
podam to na przykładzie:
Załóżmy, że moja baza danych zawiera pojazdy i 1/5 z nich to auta, które zawierają dodatkowe dane abs, kolor nadwozia,paliwo,rodzaj nadwozia.

i co jest lepiej zrobić?
Stworzyć specjalnie da nich 4 kolumny w bazie z tymi wartościami, czy dodać jedną "inne" z której by też korzystały też inne pojazdy.
w tej kolumnie by były wpisywane wartości po /.
Teraz wyszukiwanie auta o Kolorze czerwonym by było poprzez %czerwony% w kolumnie "inne"

wiesz o co mi chodzi?
to jest dość bezpieczne i dobre rozwiązanie?
Go to the top of the page
+Quote Post
Mchl
post
Post #26





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

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


To jest rozwiązanie, którego będziesz żałował. Lepiej zrobić listę EAV.

http://explainextended.com/2010/04/02/mult...-vs-not-exists/
Go to the top of the page
+Quote Post
pala2222
post
Post #27





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

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


mam w planach szukajkę (IMG:style_emoticons/default/biggrin.gif) by służyła tylko do szukania po tytułach
taką, że jak wypiszę call of duty 2
to najpierw wyskoczy mi
call of duty 2
potem wszystkie tytuły zawierające call of duty
i na końcu wszystkie z call lub duty
(ale tak żeby się nie powtarzało)

w cześniej się o to pytałem na forum i napisano mi, żeby zainteresował się FULL TEXT SEARCHING

naskrobałem takie coś, ale nic nie wypisuje a rekordy zawierają w kolumnie nazwa rekordy call of duty

  1. $zapytanie="SELECT nazwa FROM gry WHERE MATCH (nazwa) AGAINST ('call of duty')";
  2. $idzapytania = mysql_query($zapytanie);
  3.  
  4. while( $wiersz = mysql_fetch_array($idzapytania) ){
  5. echo "<td>".$wiersz['nazwa']."</td>";
  6. }


Ten post edytował pala2222 24.04.2010, 17:09:40
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 17:37