Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] php mysql - Nie pobranie danych

piochuxl 27 Sty 2017 10:13 978 21
  • #1 27 Sty 2017 10:13
    piochuxl
    Poziom 20  

    Więc tak
    jest tabela Linki która ma za zadanie przekierować link na stronę według idlink.
    Chciałbym pobrać wartość pola status przy formie:
    http://strona.pl/strona.php?idlink=ABCD12345
    I jeśli wartość idlink jest wartością numeryczną wszystko działa
    Jeśli zaś w formie literowo-cyfrowej już nie. Typ pola to varchar.
    Co nie tak jest w tym kodzie?
    Działa za to wszystko jeśli link jest:
    http://strona.pl/strona.php?idlink="ABCD12345"
    Nie chciał bym jednak by był ten cudzysłów.


    Kod: php
    Zaloguj się, aby zobaczyć kod

    0 21
  • #2 27 Sty 2017 10:34
    smaboman
    Poziom 13  

    Próbowałeś w taki sposób?

    $zapytanie = mysqli_query($baza, "SELECT sta_str FROM Linki WHERE Link_id = '".$link."'");

    Zdajesz sobie sprawę z tego, że przekazywanie wartości prosto z funkcji GET do zapytania nie jest bezpieczne?

    0
  • #3 27 Sty 2017 11:18
    piochuxl
    Poziom 20  

    Nie działa. Oczywiście że zdaję sobie sprawę ale tu nie ma znaczenia. Mi chodzi tylko o to by zadziałało a resztą zajmę się później .

    0
  • #4 27 Sty 2017 13:20
    arnoldziq
    Moderator Programowanie

    piochuxl napisał:
    Nie działa.
    A moze kolega, uprzejmie, poda jaka jest definicja tej tableli 'sta_str' ?
    piochuxl napisał:
    $zapytanie = mysqli_query($baza, "SELECT sta_str FROM Linki WHERE Link_id = ".$link);
    Takie zapytanie zawsze będzie się odwoływać tylko do wartości liczbowych. Wprowadzenie tekstu do wartości $link powino wywołac błąd zapytania. I na 100% wywołuje ('Błąd konwersji" lub podobne ).
    smaboman napisał:
    $zapytanie = mysqli_query($baza, "SELECT sta_str FROM Linki WHERE Link_id = '".$link."'");
    To ma prawo zadziałać, ale żeby miało obowiązek zadziałać, trzeba ten zapis odrobinkę zmienić. Np. na taki:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    Autorowi sugeruję tę linję skopiować dokładnie z tego posta, a nie wpisywać ręcznie.
    Także, dobrą praktyką jest; najpierw umieszczenie całego zapytania SQL w zmiennej a dopiero potem użycie tej zmiennej w mysqli:
    Kod: php
    Zaloguj się, aby zobaczyć kod
    W ten sposób można wyświetlić treść zapytania SQL, skopiowac np. do myPHPAdmin i sprawdzić dlaczego nie działa zgodnie z założeniami.

    0
  • #5 27 Sty 2017 13:33
    piochuxl
    Poziom 20  

    arnoldziq napisał:
    piochuxl napisał:
    Nie działa.
    A moze kolega, uprzejmie, poda jaka jest definicja tej tableli 'sta_str' ?
    piochuxl napisał:
    $zapytanie = mysqli_query($baza, "SELECT sta_str FROM Linki WHERE Link_id = ".$link);
    Takie zapytanie zawsze będzie się odwoływać tylko do wartości liczbowych. Wprowadzenie tekstu do wartości $link powino wywołac błąd zapytania. I na 100% wywołuje ('Błąd konwersji" lub podobne ).
    smaboman napisał:
    $zapytanie = mysqli_query($baza, "SELECT sta_str FROM Linki WHERE Link_id = '".$link."'");
    To ma prawo zadziałać, ale żeby miało obowiązek zadziałać, trzeba ten zapis odrobinkę zmienić. Np. na taki:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    Autorowi sugeruję tę linję skopiować dokładnie z tego posta, a nie wpisywać ręcznie.
    Także, dobrą praktyką jest; najpierw umieszczenie całego zapytania SQL w zmiennej a dopiero potem użycie tej zmiennej w mysqli:
    Kod: php
    Zaloguj się, aby zobaczyć kod
    W ten sposób można wyświetlić treść zapytania SQL, skopiowac np. do myPHPAdmin i sprawdzić dlaczego nie działa zgodnie z założeniami.


    stra_sta to pole w tabeli.

    0
  • #6 27 Sty 2017 14:07
    arnoldziq
    Moderator Programowanie

    piochuxl napisał:
    stra_sta to pole w tabeli.
    No, tego to się domyśliłem. Jak zapewne wszyscy.
    Chodzi o to; jako co te pole jest zdefiniowane? A właściwie, to jak wygląda definicja wszystkich pól w tej tableli, której kolega używa.
    Zamieszczenie "Create Table ..." byłoby całkiem pomocne.

    0
  • #7 27 Sty 2017 14:13
    smaboman
    Poziom 13  

    piochuxl napisał:
    Jeśli zaś w formie literowo-cyfrowej już nie. Typ pola to varchar.


    Wydaje mi się, że to zdanie odnosiło się właśnie stra_sta.

    Wg mnie również:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    powinno zadziałać, ale niech może autor potwierdzi definicję pola i poda błąd, który jest zgłaszany.

    0
  • #8 27 Sty 2017 14:51
    piochuxl
    Poziom 20  

    Jest to oczywiście varchar

    Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in strona.php on line 9

    Warning: mysql_close(): no MySQL-Link resource supplied in strona.php on line 36

    0
  • #9 15 Mar 2017 16:23
    arnoldziq
    Moderator Programowanie

    Sugeruję zamieścić kod, który generuje te błędy.
    Same numery linii nic nikomu nie powiedzą.

    0
  • #10 15 Mar 2017 16:26
    piochuxl
    Poziom 20  

    Ok usunę puste linie i dodam tu kod. Ale to rano bo dziś czas do domku:)

    0
  • #11 16 Mar 2017 13:24
    piochuxl
    Poziom 20  

    Oki czysty kod:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    błąd to:
    Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in /linki.php on line 5

    Mysql:
    Kod: sql
    Zaloguj się, aby zobaczyć kod

    0
  • #12 16 Mar 2017 14:19
    arnoldziq
    Moderator Programowanie

    Tu jest problem :

    Kod: php
    Zaloguj się, aby zobaczyć kod
    Zmienna $baza nie jest nigdzie zdefioniowana.

    Zgaduję, że umknęła gdzieś linia :
    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #13 16 Mar 2017 14:20
    piochuxl
    Poziom 20  

    Nie uciekła linia, zrobiłem to za pomocą include. I jak wcześniej piszę id w formie 1234 odczytuje a w formie AA11 już nie

    0
  • #14 16 Mar 2017 14:22
    arnoldziq
    Moderator Programowanie

    piochuxl napisał:
    Nie uciekła linia, zrobiłem to za pomocą include.
    Widocznie słabo, skoro nie działa.

    0
  • #15 16 Mar 2017 14:23
    piochuxl
    Poziom 20  

    Działa i to bezproblemowo gdy wartość idlink jest numeryczna. Problem się robi gdy jest alfanumeryczna.

    0
  • #16 16 Mar 2017 14:23
    arnoldziq
    Moderator Programowanie

    Sugeruję też przerobić

    Kod: php
    Zaloguj się, aby zobaczyć kod

    na
    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #19 16 Mar 2017 15:25
    piochuxl
    Poziom 20  

    No i własnie nie rozumiem. Bo tylko przeniosłem skrypt do innego folderu.

    Dodano po 48 [minuty]:

    Ok ciąg dalszy wyświetla oki ale po drobnej edycji kodu w miejscu tekstu ma być hiperłącze. I według idlink ma otwierać określoną stronę
    I tu już linki nie działają na literowych id

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #20 17 Mar 2017 11:43
    arnoldziq
    Moderator Programowanie

    piochuxl napisał:
    $zapytanie = mysqli_query($baza, "SELECT sta_str FROM Linki WHERE Link_id = ".$link);
    $przekieruj = mysqli_fetch_row($zapytanie);
    $przekieruj = $przekieruj[0];
    header('Location: '.$przekieruj);

    To jest zupełnie bez sensu.
    Zrób tak :
    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #21 17 Mar 2017 11:55
    piochuxl
    Poziom 20  

    Ok działa Dzięki wielkie:)

    0
  • #22 19 Lut 2018 22:50
    piochuxl
    Poziom 20  

    Zamykam w związku z zakończeniem tematu.

    0