Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Błąd przy dodawaniu wierszy do bazy
Forum PHP.pl > Forum > Przedszkole
agata
Witam, mam problemik z dodawaniem klienta do bazy danych. Mam formularz z którego pobierane są dane i za pomocą zapytania mysql (Insert) mają zostać dodane do bazy, jednak występuje problem.

oto kod:
  1. <?php
  2. if (isset($_POST['imie']) || ($_POST['nazwisko']) || ($_POST['email']))
  3. {
  4. $imie = ucfirst( $_POST['imie']);
  5. $nazwisko = ucfirst($_POST['nazwisko']);
  6. $email = $_POST['email'];
  7. $ulica = $_POST['ulica'];
  8. $dom = $_POST['dom'];
  9. $miasto = $_POST['miasto'];
  10. $telefon = $_POST['tel'];
  11.  
  12. $query = ("INSERT INTO Klient (Imie, Nazwisko, Ulica, Miasto, Email, Telefon,Dom)
  13. VALUES ('$imie', '$nazwisko', '$ulica', '$miasto', '$email', '$tel','$dom')") ;
  14. $results = mysql_query($query) or die (mysql_error('Nie mogę wykonać polecenia Insert'));
  15.  
  16. $ile = mysql_affected_rows($results); // --- linia nr 100
  17.  
  18. if ( $ile > 0)
  19. {
  20. echo 'Klient został dodany pomyślnie';
  21. }
  22. else
  23. {
  24. echo 'Niestety, dodanie klienta nie powiodło się';
  25. }
  26. }
  27.  
  28. ?>


Samo zapytanie mysql jest poprawne, problem pojawia się przy instrukcji if. Jeżeli wykomentuje instrukcję klient zostaje dodany do bazy ale nie mam żadnego potwierdzenia tej operacji. Instrukcja ma wywołać komunikat pozytywny lub negatywny w zależności od tego czy klient został dodany.
Cały czas wyskakuje mi taki błąd:

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\boss\add_panel\add_client.php on line 100
Niestety, dodanie klienta nie powiodło się


Proszę o pomoc gdzie robię błąd i dlaczego bez if zapytanie zostaje wykonane a z if wysypuje się.
Pilsener
Podstawy pracy z bazami danych:
  1. if(mysql_query($zapytanie_do_bazy)){
  2. echo 'sukces';
  3. }else{
  4. echo 'babol: '.mysql_error();
  5. }
- jak zapytanie jest złe zawsze dostajesz komunikat błędu, do tego służy funkcja mysql_error

Edit > Do postu poniżej: Nie napisałem nigdzie, że zapytanie jest złe (użyłem słowa "jak"), temat przeczytałem dlatego podałem poprawny sposób sprawdzenia operacji na bazie przez mysql_error, reszty użytkowniczka powinna się domyśleć.
darko
Zobacz co zwraca mysql_query dla poleceń INSERT, nie zwraca zasobu, a booleana:

Cytat
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.

The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.

Use mysql_num_rows() to find out how many rows were returned for a SELECT statement or mysql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.

mysql_query() will also fail and return FALSE if the user does not have permission to access the table(s) referenced by the query.


Pilsener raczej nie przeczytałeś tematu, zapytanie jest poprawne, nie o to chodziło.

Agata czyli wystarczy tak:

  1. if(mysql_query($query)) {
  2. // OK
  3. }
  4. else {
  5. }
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.