Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pdo problem z datatime
xxdrago
post 4.01.2013, 23:52:47
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Witam, dzisiaj wziąłem się za naukę PDO w mysql , problem polega na tym , że w bazie mam pole "DATATIME" , i za bardzo nie wiem, jak mam dodać parametr NOW(); przy zapytaniu. Można prosić o pomoc? poniżej daje skrypt:

  1. $stmt = $pdo->prepare('INSERT INTO `pliki` (`nazwa`, `typ`, `data`, `ip`,`przegladarka`,`prv` ) VALUES(
  2. :nazwa,
  3. :typ,
  4. :data,
  5. :ip,
  6. :przegladarka,
  7. :prv)
  8. ');
  9.  
  10.  
  11. $stmt->bindValue(':nazwa', 'NAZWA', PDO::PARAM_STR); // Nazwa pliku
  12. $stmt->bindValue(':typ', 'rar', PDO::PARAM_STR);
  13. $stmt->bindValue(':data', 'NOW();', PDO::PARAM_STR);
  14. $stmt->bindValue(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
  15. $stmt->bindValue(':przegladarka', $_SERVER['HTTP_USER_AGENT'], PDO::PARAM_STR);
  16. $stmt->bindValue(':prv', '1', PDO::PARAM_INT);
  17.  
  18. $stmt->execute();


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
--dox--
post 5.01.2013, 00:03:19
Post #2





Goście







  1. $stmt->bindValue(':data', NOW(), PDO::PARAM_STR);
Go to the top of the page
+Quote Post
xxdrago
post 5.01.2013, 00:13:32
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Dzięki za odpowiedź, próbowałem tak i tak ale dalej nie działa:

$stmt->bindValue(':data',' NOW()', PDO::PARAM_STR); // W bazie 0000-00-00 00:00:00

$stmt->bindValue(':data',NOW(), PDO::PARAM_STR); // Zwraca , że funkcja nie istnieje.


Pozdrawiam


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
--Dox--
post 5.01.2013, 00:17:32
Post #4





Goście







  1. $stmt = $pdo->prepare('INSERT INTO `pliki` (`nazwa`, `typ`, `data`, `ip`,`przegladarka`,`prv` ) VALUES(
  2. :nazwa,
  3. :typ,
  4. now(),
  5. :ip,
  6. :przegladarka,
  7. :prv)
  8. ');
  9.  
  10.  
  11. $stmt->bindValue(':nazwa', 'NAZWA', PDO::PARAM_STR); // Nazwa pliku
  12. $stmt->bindValue(':typ', 'rar', PDO::PARAM_STR);
  13. $stmt->bindValue(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
  14. $stmt->bindValue(':przegladarka', $_SERVER['HTTP_USER_AGENT'], PDO::PARAM_STR);
  15. $stmt->bindValue(':prv', '1', PDO::PARAM_INT);
  16.  
  17. $stmt->execute();


Spróbuj tak od razu dać bez bindowania.
Go to the top of the page
+Quote Post
Damonsson
post 5.01.2013, 00:21:36
Post #5





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


  1. now()
to funkcja MySQL, jeśli chcesz aktualną datę, to musisz podać
w odpowiednim formacie. Lub bez bindowania, od razu tak jak podał kolega wyżej.
Go to the top of the page
+Quote Post
xxdrago
post 5.01.2013, 00:24:14
Post #6





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Dziękuje,
rozumiem, że jak dodaje dane przez to bindowanie to nie muszę ich filtrować? przed atakiem injection i XSS?


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
Damonsson
post 5.01.2013, 00:30:35
Post #7





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Przed SQL injection jesteś teoretycznie w 100% chroniony, jeśli używasz MySQL podawanie PDO::PARAM_STR i INT jest zbędne, baza sama wie jakiego typu daną ma otrzymać, bo definiujesz to w bazie danych i innej wartości nie przyjmie (int, varchar itp.).

Co do XSS to bindowanie nie ma z tym praktycznie nic wspólnego. Musisz odpowiednio filtrować dane.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:03