Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Monitoring błędów
Forum PHP.pl > Forum > Przedszkole
Tho
Formularz nie chce dodać produktu do bazy danych, a wyświetla mi tylko tyle(patrz: 'Erroe'). -Tak by ładnie kompnowało się z tym co już jest w tym skrypcie...

Jak dodać szczegółowe wyświetlanie błędów, bo nie wiem czy winna jest baza, czy kod php, a taka informacja była by bardzo przydatna...
peter13135
http://www.php.net/manual/en/pdo.errorinfo.php
Tho
Dlaczego nie np error_reporting( E_ALL ) ? Gdzie to najlepiej wstawić?

Czemu Wy tutaj zawsze tak powściągliwie odpowiadacie? smile.gif

peter13135
Odpowiadamy powściągliwie bo:
a) Chcemy zmusić pytającego do samodzielnego wyszukiwania informacji.
cool.gif My nie jesteśmy tutaj od dawania gotowców, tylko od dawanie wskazówek.
c) Moglibyśmy pisać gotowce, całe rozwiązania, ale poco się powtarzać ? Większosć tych informacji jest już w necie.

Dlatego nie error_reporting, bo to nie jest błąd składniowy, czy coś co by dotyczyło PHP, tylko błąd bazy danych która jest takim dodatkiem do PHP
Tho
OK, tak czy inaczej - dzięki wink.gif

Wykonując zapytanie bez formularza, bezbłędnie dodaje rekord! Gdy robię to przez formularz Wyświetla mi to co w miejscu 'Error' (patrz: kod w linku który podałem).

Czym to może być spowodowane, jak widać nie błędem sql, może jakimś błędem w formularzu?

Dlaczego do cholery nie można dodać tego formularzem a można w phpmyadmin?

Czy nikt nie zauważa żadnego błędu w formularzu?!
potreb
Weź sobie wrzuć pdo->errorInfo() i sprawdź co zwraca ci zapytanie.
peter13135
przydała by się filtracja danych wchodzących. addslashes, lub real_escape_string (chyba, że PDO robi to automagicznie)
Tho
Cytat(potreb @ 26.08.2011, 21:48:10 ) *
Weź sobie wrzuć pdo->errorInfo() i sprawdź co zwraca ci zapytanie.


OK, wstawiłem, teraz kod wygląda:

  1. <?php
  2. error_reporting(E_ALL | E_STRICT | E_NOTICE);
  3. ini_set('display_errors', '1');
  4. try
  5. {
  6. if($_SERVER['REQUEST_METHOD'] == 'POST')
  7. {
  8. $pdo = new PDO('mysql:host=localhost;dbname=xxx', 'xxx', 'xxx');
  9.  
  10. $ilosc = $pdo -> errorInfo('
  11. INSERT INTO `services` (`sName`, `sSubSite`, `sShortDesc`, `sThumbnail`, `sType`) VALUES
  12. ('.$_POST['Name'].',
  13. '.$_POST['SubSite'].',
  14. '.$_POST['ShortDesc'].',
  15. '.$_POST['Thumbnail'].',
  16. '.$_POST['Type'].')
  17. ');
  18. if($ilosc > 0)
  19. {
  20. echo 'Dodano: '.$ilosc.' serwisow';
  21. }
  22. else
  23. {
  24. echo 'Wystšpił błšd podczas dodawania rekordów!';
  25. }
  26. }
  27. else
  28. {
  29. echo '
  30. <form method="post" action="#">
  31. <p>Nazwa: <input type="text" name="Name"/></p>
  32. <p>Podstrona: <input type="text" name="SubSite"/></p>
  33. <p>Krotki opis: <input type="text" name="ShortDesc"/></p>
  34. <p>Miniatura: <input type="text" name="Thumbnail"/></p>
  35. <p>Type: <select name="Type">
  36. <option value="verified">zweryfikowana</option>
  37. <option value="unverified">niezweryfikowana</option>
  38. </select></p>
  39. <p><input type="submit" value="Dodaj"/></p>
  40. </form>
  41. ';
  42. }
  43. }
  44. catch(PDOException $e)
  45. {
  46. echo 'Wystapil blad biblioteki PDO: ' . $e->getMessage();
  47. }
  48.  
  49.  
  50. ?>

Wyświetla błąd(możnesz to sobie sprawdzić, jeśli ci się chce wink.gif ):

Cytat
Warning: PDO::errorInfo() expects exactly 0 parameters, 1 given in x:\xampp\htdocs\xxx\add_service.php on line 18
Wystšpił błšd podczas dodawania rekordów!
peter13135
Hehe, co Ty najlepszego wyprawiasz ? errorInfo nie jest metodą do wykonywania zapytań z jednoczesnym raportowaniem błędów. Ta metoda po prostu zwraca błąd ostatniego zapytania.

Dałem Ci linka do manuala, to co piszesz, świadczy o tym, że w ogóle się tym nie zainteresowałeś. masz tam kilka (jak nie kilkanaście) przykładów użycia tej funkcji, a Ty tworzysz takie cuda. Zaważ, że ta metoda nie przyjmuje żadnego parametru. Nie wiem jak można tak... no dobra, nie będe sie złościł przed snem, bo nic to dobrego mi nie przyniesie.
potreb
A tak przy okazji zainteresuj się jeszcze bindValue, tka na wypadek gdyby ktoś ci chciał zrobić SQL Inj
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.