Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem
Forum PHP.pl > Forum > PHP
Myrek
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
1r0n
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!
kurtz
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.
Myrek
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.
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.