Cześć!
Zaczynam od niedawna zabawę z PHP i natrafiłam na pewien problem. Łączę się z bazą MySQL za pomocą PDO. Chcę sprawdzić, czy w bazie danych w kolumnie DLUGI_LINK jest określona wartość. Jeśli jest, to ma się pojawić odpowiedni komunikat oraz wyświetlona wartość z sąsiedniej kolumny (kolumna SKROCONY_LINK) z tego samego wiersza. I to działa. Gdy tej wartości nie ma, wówczas dodaję kolejny wiersz do bazy MySQL.
Problem pojawia się wtedy, gdy ta baza jest sprawdzana po raz kolejny, gdy podawana jest już dodana wcześniej wartość (program dodaje mi po raz kolejny tę samą wartość. Podaję kod poniżej:
<?php
//podejrzyj dane w tabeli
//require_once "dane_w_tabeli.php";
$podany_dlugi_link = $_POST["dlugi_link"];
$data = date("Y-m-d H:i:s");
$zapytanie = "SELECT * FROM linki";
$rezultat = $handler->query($zapytanie);
while($wiersz = $rezultat->fetch(PDO::FETCH_ASSOC))
{
//echo($wiersz["DLUGI_LINK"]."<br/>");
if ($podany_dlugi_link == $wiersz["DLUGI_LINK"])
{
echo("Link jest już w bazie. Wersja skrócona: ".$wiersz["SKROCONY_LINK"]);
break;//przerwij pętlę jeśli znajdziesz taki rekord
}
else
{
$zapytanie = "INSERT INTO LINKI VALUES(null,\"$podany_dlugi_link\",\"$podany_dlugi_link _SKROCONY\",\"$data\",0)";
$rezultat = $handler->query($zapytanie);
//echo("Zapytanie to: ".$zapytanie."<br/>");
echo("Dodano<br/>");
break;
}
}
?>
Siedzę już kilka dobrych godzin nad tym i nie wiem dlaczego tak się dzieje. Macie może jakieś pomysły?
Pozdrawiam!