Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem ze sprawdzeniem rekordu
Forum PHP.pl > Forum > Przedszkole
castagir
Witam


Mam problem z wyświetleniem odczytaniem rekordu.
Chciałbym aby skrypt spytał się mysql czy istnieje dany rekord i wyświetlił wynik jeśli tak. Następnie gdy wynik wyniesie 0, zostaje wpisany taki rekord do bazy.

Oto skrypt:
  1. $pytanie = $polaczenie_bd->prepare("SELECT * FROM `".$przedrostek_bd."stopnie_dostepu`
  2. WHERE 'kategoria=gosc' 'nazwa_stopnia=Gość'");
  3. $pytanie->execute();
  4. $wynik = $pytanie->fetch();
  5. if ($wynik > 0) {
  6. $sprawdzenie = false; }
  7. else {
  8. $sprawdzenie = true; }
  9. if ($sprawdzenie === true) {
  10. $pytanie = $polaczenie_bd->prepare("INSERT INTO `".$przedrostek_bd."stopnie_dostepu`
  11. (`poziom`, `kategoria`, `nazwa_stopnia`) VALUES ('1', 'gosc', 'Gość')");
  12. $pytanie->execute(); }

  1. $pytanie = $polaczenie_bd->prepare("SELECT * FROM `".$przedrostek_bd."stopnie_dostepu`
  2. WHERE 'poziom=:param1' 'kategoria=:param2' 'nazwa_stopnia=param3'");
  3. $pytanie->bindValue(':param1', 1, PDO::PARAM_INT);
  4. $pytanie->bindValue(':param2', 'gosc', PDO::PARAM_STR);
  5. $pytanie->bindValue(':param3', 'Gość', PDO::PARAM_STR);
  6. $pytanie->execute();
  7. $wynik = $pytanie->fetch();
  8. if ($wynik > 0) {
  9. $sprawdzenie = false; }
  10. else {
  11. $sprawdzenie = true; }
  12. if ($sprawdzenie === true) {
  13. $pytanie = $polaczenie_bd->prepare("INSERT INTO `".$przedrostek_bd."stopnie_dostepu`
  14. (`poziom`, `kategoria`, `nazwa_stopnia`) VALUES ('1', 'gosc', 'Gość')");
  15. $pytanie->execute(); }


A oto wynik błędu:
  1. Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'' in /var/www/html/instalator/sql.php:193 Stack trace: #0 /var/www/html/instalator/sql.php(193): PDOStatement->execute() #1 /var/www/html/instalator/inst_5.php(14): include('/var/www/html/i...') #2 {main} thrown in /var/www/html/instalator/sql.php on line 193


Wiem, że chce ciągle zduplikować ten rekord, który już istnieje, lecz tak jak napisałem, coś nie mogę odczytać z bazy danych czy istnieje taki rekord. Wynik wyświetlałem już za pomoca pętli i nic nie wykazywał.
viking
Daj count($wynik) > 0.
Poza tym http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html
Rysh
Zapomniales przecinka w zapytaniu?
Turson
  1. $pytanie = $polaczenie_bd->prepare("SELECT * FROM `".$przedrostek_bd."stopnie_dostepu`
  2. WHERE 'kategoria=gosc' 'nazwa_stopnia=Gość'");

Ja tu widzę brak AND/OR. Tak samo dalej
castagir
Zrobione. biggrin.gif
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.