Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Jakie zapytanie?
Forum PHP.pl > Forum > Przedszkole
pawelwel
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.
Diesel
  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]."')";
pawelwel
Dziękuję za zainteresowanie, ale niestety skrypt nie zwraca błędu i nie dodaje nowych rekordów do bazy...
timon27
na dobry początek daj
  1. echo $zapytanie;
i powiedz co się pojawi.
pawelwel
  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 ?
timon27
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?).
pawelwel
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.
timon27
Bo robisz 4 zapytania zamiast jednego (każde zapytanie tworzy nowe id).
Zrobisz je analogicznie do pojedynczego.
Myślę że dasz radę smile.gif
pawelwel
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ę.
timon27
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.
pawelwel
  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ąć ?
timon27
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.
pawelwel
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.
timon27
  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.=")";
pawelwel
Zwraca mi błąd w 4 linii Twojego kodu.
timon27
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.
pawelwel
Jasne, dziękuję za pomysł, jutro się nim zajmę.
Idea jest prosta, najtrudniejsza w tym wszystkim to składnia.

Pozdrawiam.
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.