Pobieranie i wyświetlanie 1 rekordu z bazy mysql

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???

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

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.

  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.

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‘.’’; $dodaj = $wiersz[2]+1; $zapytanie2 = “UPDATE linki SET pobrany=’”.$dodaj."’, WHERE id=’".$id."’"; mysql_query($zapytanie2); echo ‘Plik pobrano ‘.$dodaj.’ razy’; } ?[/code]

$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

http://pl.wikipedia.org/wiki/SQL_injection

W Twoim zapytaniu przed klauzulą WHERE jest przecinek:

poprawnie:

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