Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zapytaniem
Myrek
post 8.02.2003, 18:03:25
Post #1





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

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


Witam.
Potrzebuje pomocy. Mam wykonać zapytanie do bazy danych (MySQL, PHP4, Apache) polegające na wstawieniu do kolumny np. p1 (mam kolumny w tabeli od p1 do p50) znaku 1. Nie było by problemu, gdyby nie fakt, że z tablicy ($przed[„id_p”]) jest pobierany numer kolumny (1-50) i trzeba go dodać do litery p, tak aby powstał np. p1, Niżej przedstawiam moje zapytanie, które nie działa. Wyświetlany jest komunikat:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' In ...

Kod
$zapytanie = "insert into xxx (p'$przed["id_p"]')values (1)


Czyli chce wstawić do kolumny p+cyferka z tablicy (tak aby było np. p2) wartość 1. Da się to zrobić? Można połączyć zwykły tekst ze zmienną, tak żeby powstał ciąg znaków? W tabeli musiałem zrobić kolumny ze znakiem p na początku(p1,p2,p3), bo nie da się stworzyć kolumn o indeksach złożonych z samych cyfr, czy tak jest? Ja nie mogłem tego zrobić.

Robił ktoś może coś w rodzaju wywiadówki przez Internet? Robię coś takiego i mam problemy z zaprojektowaniem bazy danych dla wszystkich klas, przedmiotów i ocen poszczególnych uczniów. Jeśli ktoś zna ten problem to pomoc mile widziana, chodzi mi o sam szkielet bazy danych.
Dzięki.
Pozdrawiam.
Myrek
Go to the top of the page
+Quote Post
1r0n
post 8.02.2003, 18:58:09
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.03.2002
Skąd: Nowy Dwór Mazowiecki

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


Ja by to zrobil w ten sposob...

Kod


$i = "p".$przed['id_p'];

$zapytanie = "insert into xxx ($i)values ('1')";


moze sie myle.. ale jak na moj gust powinno zadzialac..

Pozdrawiam!
Go to the top of the page
+Quote Post
kurtz
post 8.02.2003, 18:58:41
Post #3





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Cytat
Nie było by problemu, gdyby nie fakt, że z tablicy ($przed["id_p"]) jest pobierany numer kolumny (1-50) i trzeba go dodać do litery p, tak aby powstał np. p1,
[..]
Kod
$zapytanie = "insert into xxx (p'$przed["id_p"]')values (1)

[..]
Można połączyć zwykły tekst ze zmienną, tak żeby powstał ciąg znaków?

problem nie dotyczy bazy danych a zdecydowanie php. zwroc uwage ze masz problem ze stworzeiem zapytania a nie z jego obsluzeniem.

z tego co zgaduje dotychczas podstawiales zmienne do stringow korzystajac z tego ze wewnatrz "" wszystkie $zmienne sa podstawiane na wartosci - tzn "czesc $imie , milo ciebie widziec";
tak rzeczywiscie jest ale jak widac problemy powstaja gdy chcesz odczytac jakas zmienna z tablicy - wowczas moze powstac konflikt "" (poczatek deklaracji zmiennej typu string zaczyna sie od " i konczy ")

zeby zaradzic tego typu problemow mozemy albo "sklejac" nasze zapytania czy inne lancuchy z fragmentow (1) albo inaczej podstawiac elementy tablicy wewnatrz lancuchow (2)

1)
aby polaczyc w php zmienne typu string uzywamy . (kropki) do laczenia ich w lancuch.

np:
Kod
$powitanie = "czesc " . $imie . " milo ciebie spotkac";
dokladnie cos takiego musisz zrobic:
Kod
$zapytanie = "insert into xx (p" . $przed["id_p"] . ") values (1)";


2)
aby odwolac sie do elementu tablicy uzywamy ' ' do oznaczenia kolumny

np
Kod
$powitanie = "czesc $dane['imie'] milo ciebei spotkac";

analogicznie
Kod
$zapytanie = "insert into xxx (p$['id_p']) values (1)";



trzeba jednak uwazac przy wielu wymiarach, tzn odowlywaniu sie do wiecej niz jednego indeksu tablicy. np $dane['nazwisko']['rodowe']; Nie ma zadnych problemow z przekazaniem tego typu danych do tworzenego lancucha korzystajac z metody 1). nie uda sie jednak w prost skorzystac z metody 2). tutaj z pomoca przychodza {}:
Kod
$powitanie = "jestes z domu: {$dane['nazwisko']['rodowe']} milo ciebei spotkac";


uff starczy ;)
jak cos wszystkie w/w informacje znajdziesz na poczatku dokumentacji w informacji o samym jezyku php.


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Myrek
post 9.02.2003, 12:40:28
Post #4





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

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


Dzięki serdeczne za tak wyczerpującą odpowiedz. Przepraszam za umieszczenie tego postu w sekcji baz danych. Popracuje nad tym i zobaczymy co z tego wyjdzie.
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: 23.06.2025 - 22:29