Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pdo problem z datatime
Forum PHP.pl > Forum > Przedszkole
xxdrago
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();
-dox-
  1. $stmt->bindValue(':data', NOW(), PDO::PARAM_STR);
xxdrago
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
-Dox-
  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.
Damonsson
  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.
xxdrago
Dziękuje,
rozumiem, że jak dodaje dane przez to bindowanie to nie muszę ich filtrować? przed atakiem injection i XSS?
Damonsson
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.