Pobieranie i wyświetlanie 1 rekordu z bazy mysql


(Radmistrz2) #1

Tak jak w temacie. Napisałem taki skrypt ale nie działa:

<?php

polacz();

$id=$_GET['id'];

$zapytanie = "select id from linki where id like ".$id."";

$wynik= mysql_query($zapytanie);

$wiersz = mysql_fetch_row($wynik);

echo '
echo '">';

echo "$wiersz[2]";

echo '';


?>[/code]

Baza danych składa się z tabeli linki oraz kolumn kolejno:id, link, nazwa , rozmiar , pobrany. Wyskakuje błąd w tej linii: "$wiersz = mysql_fetch_row($wynik);". funkcja polacz() jest dobrze zdefiniowana. Czyż by to wina $zapytanie????


(Kutar 0) #2

Jaki błąd? Podaj jego treść.


(Radmistrz2) #3

Sorki zapomniałem napisac że już mi nie wywala błedu ale dalej to nie działa. Jeśli link to mojastrona.pl/?p=pobierz&id=3 powinno wyswietlic link do pliku z bazy danych a tak się nie dzieje.


(L337 Crew) #4
  1. Przy wybieraniu jednego rekordu nie używa się przeszukiwania bazy danych!

Wyrzuć całe like...

  1. Niby jak to ma działać? !!

Twoje zapytanie przetłumaczone na polski:

Wybierz tylko pole id z tabeli linki, gdzie id = $_GET['id'].

Ma to jakiś sens?

Dodatkowo przy wyświetlaniu danych, odwołujesz się do drugiego pola - link , oraz trzeciego - nazwa...

Nie możesz użyć tych pól, ponieważ nie wybrałeś ich w zapytaniu...

Zrób coś takiego:

SELECT * FROM `linki` ...
  1. Co to jest za echo ?! Brakuje jeszcze, by przed każdym dawać

    ?php echo $wiersz[1];?

    ?php echo ''; ?

Sklej tak, by było jedno wywołanie funkcji echo.


(Radmistrz2) #5

Zrobiłem tak jak kazałeś i wszystko działa. Teraz mam kolejny problem. Nie zlicza mi ilości pobrań plików. Sorry za banalne pytania ale z bazą danych pracuję dopiero kilka dni. Oto kod:

<?php

polacz();

$id=$_GET['id'];

$zapytanie = "SELECT `link`,`nazwa`,`pobrany` FROM `linki` WHERE `id`='".$id."'";

$idzapytania = mysql_query($zapytanie);

while ($wiersz = mysql_fetch_row($idzapytania)) 

 {

 echo '

'.$wiersz[1].' '.'['.' pobierz.gif'.']('.%24wiersz%5B0%5D.')'; $dodaj = $wiersz[2]+1; $zapytanie2 = "UPDATE linki SET pobrany='".$dodaj."', WHERE id='".$id."'"; mysql_query($zapytanie2); echo 'Plik pobrano '.$dodaj.' razy'; } ?[/code]


(Kutar 0) #6
$zapytanie2 = "UPDATE `linki` SET `pobrany`='".$dodaj."', WHERE `id`='".$id."'";

Usuń przecinek przed WHERE

$zapytanie2 = "UPDATE `linki` SET `pobrany`='".$dodaj."' WHERE `id`='".$id."'";

BTW, poczytaj o SQL injection


(L337 Crew) #7

W Twoim zapytaniu przed klauzulą WHERE jest przecinek:

poprawnie:

mysql_query("UPDATE `linki` SET `pobrany`=`pobrany`+1 WHERE id='$id'");