Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Jakie zapytanie?
pawelwel
post 9.12.2013, 19:39:43
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


Zapytanie które nie dodaje żadnych informacji do SQL
  1. $zapytanie = "INSERT INTO `nazwa_bazy` (`id`, '$a[$x]') VALUES ('', '$b[$x]')";


$zapytanie jest umieszczone w pętli, która wykonuje ilość operacji = ilość kolumn -1
wartości a i b na pewno są prawidłowe.

jak wartość $a[$x] zamienię na nazwę konkretnej kolumny, to baza otrzymuje wyniki, oczywiście inne niż się spodziewam bo każde z innym id i dla jednej kolumny.

Potrzebuję, aby wszystkie wartości w tej pętli były zapisane dla tego samego id (id jest AUTO_INCREMENT).


Nie mogę tego przeskoczyć.
Pozdrawiam.
Go to the top of the page
+Quote Post
Diesel
post 9.12.2013, 20:02:07
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 9.10.2013

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


  1. [SQL] pobierz, plaintext
  2. $zapytanie = "INSERT INTO `nazwa_bazy` (`id`, '$a[$x]') VALUES ('', '$b[$x]')";


Na moje amatorskie oko, źle umieściłeś zmienne php w zapytaniu. Są traktowane jak zwykły string.

  1. [SQL] pobierz, plaintext
  2. $zapytanie = "INSERT INTO `nazwa_bazy` (`id`, '".$a[$x]."') VALUES ('', '".$b[$x]."')";


Ten post edytował Diesel 9.12.2013, 20:03:00
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 20:28:10
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


Dziękuję za zainteresowanie, ale niestety skrypt nie zwraca błędu i nie dodaje nowych rekordów do bazy...
Go to the top of the page
+Quote Post
timon27
post 9.12.2013, 20:32:46
Post #4





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


na dobry początek daj
  1. echo $zapytanie;
i powiedz co się pojawi.
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 21:00:17
Post #5





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


  1. $zapytanie = "INSERT INTO `slupy_typ` (`id`, '$a[$x]') VALUES ('', '$b[$x]')";
  2. echo $zapytanie;
  3. echo '<br>';
  4. echo $a[$x];
  5. echo ' ';
  6. echo $b[$x];
  7. echo ' ';
  8. echo '<br>';


Zwraca
  1. INSERT INTO `slupy_typ` (`id`, 'Typ_Slupa') VALUES ('', '1')
  2. Typ_Slupa 1
  3. INSERT INTO `slupy_typ` (`id`, 'moc') VALUES ('', '1')
  4. moc 1
  5. INSERT INTO `slupy_typ` (`id`, 'wysokosc') VALUES ('', '1')
  6. wysokosc 1
  7. INSERT INTO `slupy_typ` (`id`, 'osprzet') VALUES ('', '1')
  8. osprzet 1



odnalazłęm błąd w składni


teraz program zwraca dane ale nie tak jak bym chciał.


Pełny tekst id Typ_Slupa moc wysokosc osprzet
Edytuj Usuń 2 1 NULL NULL NULL
Edytuj Usuń 3 NULL 1 NULL NULL
Edytuj Usuń 4 NULL NULL 1 NULL
Edytuj Usuń 5 NULL NULL NULL 1


a powinno być
Pełny tekst id Typ_Slupa moc wysokosc osprzet
Edytuj Usuń 2 1 1 1 1

Jak zrobić, aby był stały numer ID nadany kolejny poprzez AUTO_INCREMENT w sql ?
Go to the top of the page
+Quote Post
timon27
post 9.12.2013, 21:01:14
Post #6





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Wygląda w miarę poprawnie (zapytanie) ale popraw jeszcze pojedyncze cudzysłowie
Wszystkie z:
  1. '

na:
  1. `

(tylko w zapytaniu).

Może pomoże.
Następnie weź to zapytanie i wklej do phpmyadmin -> zapytanie mysql (umiesz?).

Ten post edytował timon27 9.12.2013, 21:02:07
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 21:03:26
Post #7





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


Wyprzedziłem Twoją odpowiedź wink.gif
Tak sprawdziłem to SQL w phpmyadmim

Wyniku się spodziewałem, ale nie taki jak bym chciał, problem opisałem powyżej.
Go to the top of the page
+Quote Post
timon27
post 9.12.2013, 21:04:56
Post #8





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Bo robisz 4 zapytania zamiast jednego (każde zapytanie tworzy nowe id).
Zrobisz je analogicznie do pojedynczego.
Myślę że dasz radę smile.gif

Ten post edytował timon27 9.12.2013, 21:05:19
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 21:12:36
Post #9





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


Zachowanie php rozumiem, lecz nie wiem jak to rozwiązać.
Jak widzisz, w PHP jestem początkujący tak samo jak w sql - to mój pierwszy program.

Problem polega na tym, że nie jest stała ilość kolumn, więc sztywno nie można ich zadeklarować

Podpowiedz proszę co można zrobić, może umieścić to w pętli?

np.
$zapytanie = "INSERT INTO `slupy_typ` (`id`, `PĘTLA`) VALUES ('', 'PĘTLA')";

w ten sposób stworzy się jedno zapytanie.

Nie wiem czy tak się da i czy może jest inny sposób.
Pozdrawiam i dziękuję.
Go to the top of the page
+Quote Post
timon27
post 9.12.2013, 21:24:31
Post #10





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


No analogicznie:
Dwa pierwsze w jednym:

  1. INSERT INTO `slupy_typ` (`id`, 'Typ_Slupa') VALUES ('', '1')
  2. INSERT INTO `slupy_typ` (`id`, 'moc') VALUES ('', '1')


zamieniamy na:

  1. INSERT INTO `slupy_typ` (`id`, 'Typ_Slupa', 'moc') VALUES ('', '1','1')


i nie przeszkadza tu że istnieją jeszcze inne kolumny.

Ten post edytował timon27 9.12.2013, 21:25:48
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 21:31:02
Post #11





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


  1.  
  2. INSERT INTO `slupy_typ` (`id`, 'Typ_Slupa', 'moc') VALUES ('', '1','1')



W ten sposób nie mogę ponieważ ilośc kolumn nigdy nie będzie stała, może być mniej może być więcej kolumn dlatego nie mogę deklarować ich stałych wielkości, dlatego w wszędzie postawiłem zmienne.
Wcześniej mam skrypt który wczytuje z bazy danych wszystkie istniejące kolumny, wprowadza je do formularza, a formularz wysyła do tego skryptu, który dodaje do sql.

Rozwiązaniem jest jeśli wygeneruję kolejny numer id i go sztywni przypiszę. Kolejny numer znajduje się tutaj

Indeksy: Dokumentacja

Działanie Nazwa klucza Typ Jednoznaczny Spakowany Pole Moc Metoda porównywania napisów Null Komentarz
Edytuj Usuń PRIMARY BTREE Tak Nie id 8 A
Ale jak go wyciągnąć ?
Go to the top of the page
+Quote Post
timon27
post 9.12.2013, 21:32:45
Post #12





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Kluczowym zdaniem w mom poście bylo:
"i nie przeszkadza tu że istnieją jeszcze inne kolumny."
I nie ważne ile ich jest.
Jeśli tamte 5 zapytań ci działało, to to też będzie.

Ten post edytował timon27 9.12.2013, 21:33:33
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 21:40:52
Post #13





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


może inaczej.


muszę wygenerować następujące zapytanie

  1. $zapytanie = "INSERT INTO `slupy_typ` (`id`, `$a[1]` ,`$a[2]`, `$a[3]`, `$a[4]`, `$a[5]`, `$a[x]`) VALUES ('', '$b[1]', '$b[2]', '$b[3]', '$b[4]', '$b[5]', '$b[$x]')";


Tak musi wyglądać zapytanie.
Dzisiaj jest powiedzmy 3 kolumny, ale jutro może być 5 i wtedy musiałbym ręcznie modyfikować kod.
Go to the top of the page
+Quote Post
timon27
post 9.12.2013, 21:54:19
Post #14





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


  1. $zapytanie= "INSERT INTO `slupy_typ` (`id`";
  2. for ($i=1;$i<$x;$i++){
  3. $zapytanie.=", `".$a[$i]."`"
  4. }
  5.  
  6. $zapytanie.=" ) VALUES ('',";
  7.  
  8. for ($i=1;$i<$x;$i++){
  9. $zapytanie.=", `".$b[$i]."`"
  10. }
  11.  
  12. $zapytanie.=")";


Ten post edytował timon27 9.12.2013, 21:55:05
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 21:57:56
Post #15





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


Zwraca mi błąd w 4 linii Twojego kodu.
Go to the top of the page
+Quote Post
timon27
post 9.12.2013, 22:12:07
Post #16





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


pawelpawel: pokazuje ci tylko sposób rozwiązania. Piszę w przeglądarce.
Więc zdarzają się błędy.
Zanim zaimplementujesz to przeczytaj - na przykład tu najczęstszy błąd programistów php - brak średnika na końcu lini.
Go to the top of the page
+Quote Post
pawelwel
post 9.12.2013, 22:17:10
Post #17





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2006

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


Jasne, dziękuję za pomysł, jutro się nim zajmę.
Idea jest prosta, najtrudniejsza w tym wszystkim to składnia.

Pozdrawiam.
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 - 02:17