Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]PDO zapisanie zapytanie do pliku (SELECT, INSERT)
kielich
post 15.11.2012, 13:20:06
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Witam,
Mam pewien problem mianowicie chce zapisać zapytanie (treść) do pliku

w takiej postaci
  1. $insert = $pdo -> prepare('INSERT INTO imiona (imie) VALUES(:imie');
  2. $insert -> bindValue(':imie', $_POST['imie'], PDO::PARAM_STR);


Wszystko się zapisuje ale jest mały problem :
zapisana wartośc to

  1. INSERT INTO imiona (imie) VALUES(:imie)


A ja potrzebował bym zwykłego zapytania, mianowicie
  1. INSERT INTO imiona (imie) VALUES('Basia')


Jak tego dokonać questionmark.gif


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
!*!
post 15.11.2012, 13:27:24
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Jak to zapisujesz i głównie w jakim celu, tym bardziej że bindujesz wartość?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
b4rt3kk
post 15.11.2012, 13:30:49
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Zapytanie masz błędne.

  1. $insert = $pdo -> prepare('INSERT INTO imiona (imie) VALUES (:imie)');
  2. $insert -> bindValue(':imie', $_POST['imie'], PDO::PARAM_STR);
  3. $insert -> execute();


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
d3ut3r
post 15.11.2012, 13:37:10
Post #4





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Generalnie nie jesteś wstanie dostać zbindowanego zapytania, tutaj jest wpis na którym autor proponuje rozwiązanie alternatywne, tyle że jak dla mnie to przerost formy nad treścią. Równie dobrze dla celów debugowania (choć rzadko jest to potrzebne o czym za chwilę smile.gif ) możesz zrobić tak:

  1. $insert = $pdo -> prepare('INSERT INTO imiona (imie) VALUES(:imie');
  2. $insert -> bindValue(':imie', $_POST['imie'], PDO::PARAM_STR);
  3.  
  4. echo 'Zapytanie: INSERT INTO imiona (imie) VALUES('.$pdo->quote($_POST['imie'],PDO::PARAM_STR).');';
  5.  


Dlaczego zbindowane zapytanie nie jest potrzebne ? w zasadzie jeżeli istnieje problem z zapytaniem to nie jest to problem z parametrami więc wartość tych parametrów nie ma znaczenia i możesz wpisać tam cokolwiek ważne tylko aby zgadzał się typ.

Czyli jeżeli masz:
  1. SELEKT * FROM tablica WHERE id=:id


to w zasadzie wartość :id nie ma znaczenia błąd jest w składni.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
kielich
post 15.11.2012, 14:07:35
Post #5





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


No dobrze d3ut3r
Ale jeśli mam zapytanie nie tylke z imieniem ale też innymi 20 polami to forma też przeraża ilościa i praca bo muszę to poskładac dla zapytania no i dla zapisu formy do pliku.... ?


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
d3ut3r
post 15.11.2012, 16:21:26
Post #6





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


W skrócie tak smile.gif ewentualnie możesz skorzystać z linku który, podesłałem w czystym PDO taka funkcjonalność jakiej potrzebujesz nie istnieje.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
Crozin
post 15.11.2012, 17:07:06
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Bindowanie nie działa na zasadzie łączenia przefiltrowanych parametrów z zapytaniem, stąd raczej nie uzyskasz - zresztą nawet nie powinieneś - takiej formy zapytania.
2. Zapisuj sobie zapytanie i połączone z nim parametry, np. w formacie JSON:
  1. QUERY: SELECT col_name, another_col_name FROM tbl_name WHERE col_name = :param AND abc_col_name = :param2;
  2. PARAMS: { "param": "hello!", "param2": 123 }
3. Możesz skorzystać z gotowych nakładek na PDO, np. Doctrine DBAL, które udostępniają taką funkcję.

Ten post edytował Crozin 15.11.2012, 17:07:33
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 - 09:18