Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PDO MySQL Insert, Błędne zapytanie
redirdoolb
post 3.05.2019, 13:37:22
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.05.2019

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


Hej, mam problem z zapytaniem, nie mogę sprawić aby przeszło pomyślnie.

Dane wejściowe:
  1. (
  2. [table] => players
  3. [fields] => Array
  4. (
  5. [0] => name
  6. [1] => password
  7. [2] => email
  8. )
  9.  
  10. [data] => Array
  11. (
  12. [:name] => tester
  13. [:password] => 72a3dcef165d9122a45decf13ae20631
  14. [:email] => test@test.pl
  15. )
  16.  
  17. )


Oczywiście dane są odpowiednio wrzucane do poniższej funkcji:

  1. function insert($table = "", $fields = [], $data = []){
  2. if($table == ""){
  3. pr("First variable (table) is required and cannot be empty.");
  4. } elseif(count($fields)==0) {
  5. pr("Fields are not defined.");
  6. } elseif(count($data)==0) {
  7. pr("Data is not defined.");
  8. } else {
  9. $fields = implode(",", $fields);
  10.  
  11. $placeholders = [];
  12.  
  13. foreach($data as $placeholder => $value){
  14. $placeholders[] = $placeholder;
  15. }
  16. $placeholders = implode(",", $placeholders);
  17.  
  18. $stmt = $this->connection->prepare("INSERT INTO {$table} ({$fields}) VALUES ({$placeholders})");
  19.  
  20. foreach($data as $placeholder => $value){
  21. $bind = $stmt->bindValue($placeholder, $value);
  22. }
  23.  
  24. if($stmt->execute()){
  25. return true;
  26. } else {
  27. return false;
  28. }
  29. }
  30. }


Zapytanie które widzę po użyciu "print_r" to:
  1. INSERT INTO players (name,password,email) VALUES (:name,:password,:email)


Zapytanie które powinno się wykonać:
  1. INSERT INTO players (name,password,email) VALUES ("tester", "72a3dcef165d9122a45decf13ae20631", "test@test.pl")


Wprowadziłem zapytanie ręcznie i wszystko działa, błąd jest prawdopodobnie z bindowaniem wartości.

Na funkcję "pr" nie musicie patrzeć, to po prostu print_r otoczony <pre></pre>, używam go do podglądu wartości.

Pozdrawiam,
redirdoolb

Ten post edytował redirdoolb 3.05.2019, 13:38:36
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 13:39:40
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


https://dev.mysql.com/doc/refman/8.0/en/key...-8-0-detailed-N


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 3.05.2019, 13:43:58
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


otaczaj nazwy kolumn zawsze w `
Go to the top of the page
+Quote Post
redirdoolb
post 3.05.2019, 13:45:32
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.05.2019

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


Tak jak pisaliście dodałem na początku i końcu każdego pola `, ale nic nie pomogło. Dalej zapytanie przez PDO nie przechodzi.

Teraz zapytanie wygląda tak:
  1. INSERT INTO players (`name`,`password`,`email`) VALUES (:name,:password,:email)
Go to the top of the page
+Quote Post
Pyton_000
post 3.05.2019, 13:47:02
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A jaki błąd ?
Go to the top of the page
+Quote Post
mmmmmmm
post 6.05.2019, 15:26:00
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


A nie powinno być tak:?
Kod
    [data] => Array
        (
            [':name'] => tester
            [':password'] => 72a3dcef165d9122a45decf13ae20631
            [':email'] => test@test.pl
        )
Go to the top of the page
+Quote Post
nospor
post 6.05.2019, 16:00:46
Post #7





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




@mmmmmmm a jaka jest roznica miedzy twoimi DATA a DATA podanymi przez autora? Procz rzecz jasna apostrofow ktore nie wiadomo czemu dodales do wyniku print_r ?

ps: przenosze gdyz problem z baza danych ma sredni zwiazek. Bardziej chodzi o jakis detal w php, ale poczekajmy az dostanimey wiecej szczegolow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 30.03.2024 - 09:44