Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [OOPHP]Call to undefined function NOW()
Forum PHP.pl > Forum > Przedszkole
Damonsson
  1.  
  2. KLASA:
  3. function zapytanie($sql){
  4. $this->rs = @mysql_query($sql,$this->polaczony)
  5. or die("Błąd zapytania SQL");
  6. return $this->rs;
  7. }
  8.  
  9. function dodaj($tabela, $wartosc) {
  10. $klucz = implode("`, `", array_keys($wartosc));
  11. $wartosc = implode("', '", array_values($wartosc));
  12. $this->zapytanie("INSERT INTO `$tabela` (`$klucz`) VALUES ('$wartosc')");
  13. }
  14. WYWOŁANIE:
  15. $laczbd->dodaj('uzytkownicy', array(
  16. 'dolaczyl' => NOW())
  17. );


Czemu mi wyświetla: Call to undefined function NOW() ?
Wicepsik
Ponieważ w php nie ma takiej funkcji jak NOW().


  1. $laczbd->dodaj('uzytkownicy', array('dolaczyl' => 'NOW()');
Damonsson
Ale jest w MySql, a jak to przekażę w cudzysłowach to baza danych wyświetla 0000-00-00 00:00:00 zamiast aktualnej.

Dopiero się uczę, więc prosiłbym o jakieś wyjaśnienie. Zapewne jakiś problem robi moja: function dodaj, bo jak dam przez function zapytanie i po prostu INSERT INTO uzytkownicy (dolaczyl) VALUES (now()) To jest wszystko ok.
Crozin
1)
  1. 'dolaczyl' => NOW()
To jest fragment kodu PHP - MySQL i jego funkcje nie mają tu nic do rzeczy. NOW() to próba wywołania PHPowskiej funkcji NOW, a taka nie istnieje, ani nie została zdefiniowana przez Ciebie
2) Zauważ, że w metodzie dodaj() na sztywno budujesz zapytanie SQL z watością podaną w cudzysłowie. Efektem jest zapytanie:
  1. ....VALUES('NOW()')
, czyli próbujesz wstawić tekst "NOW()", a nie wywołać funkcję.
Damonsson
No tak, ale ja głupi ;/
Faktycznie. Już wszystko działa tak jak trzeba.
Dzięki za szybkie uderzenie młotkiem w głowę.
everth
Zawsze może przelecieć tablicę array_walkiem:
  1. array_walk($wartosc,create_function('&$value,&$key','if (!preg_match("/\(.*\)/",$value)) $value = addslashes($value);'));
Crozin
@everth: http://php.net/manual/en/functions.anonymous.php
Fifi209
Moim zdaniem lepiej dać w bazie pole timestamp a jako wartość domyślą ustawić mu current_timestamp.
everth
@Crozin: czasami jesteś tak lakoniczny że ciężko zrozumieć o co ci chodzi. Tak wiem co to są funkcje anonimowe, wiem również co oznacza "Anonymous functions are available since PHP 5.3.0". Można powiedzieć że moja wersja jest wstecznie kompatybilna biggrin.gif
Crozin
Wersja 5.3 jest z nami już od ponad roku. Po poziomie kodu i pytania widać, że autor dopiero się uczy, więc niech się uczy na czymś względnie nowym. Wsteczna kompatybilność to zło - czasami zło konieczne, ale na 90% nie w tym przypadku. winksmiley.jpg
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.