Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] INSERT INTO nie działa
pjanek
post 7.04.2020, 20:23:54
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.03.2007

Ostrzeżenie: (0%)
-----


Witam,
Tak wiem, że nie w ten sposób powinienem się łączyć z bazą ale póki co to muszę to zrobić za pomoc przestarzałej technologi mysql_connect.
Problem polega na tym, że z poniższego kodu działa edycja i usuwanie wierszy z bazy, ale nie działa dodawanie INSERT INTO.
Nie rozumiem dlaczego ponieważ jak wspomniałem dwie poniższe instrukcje łączą się z bazą, mogę edytować i usuwać. Tracę cierpliwość więc proszę Was o pomoc, spójrzcie świeżym okiem i dajcie znać co może być nie tak.

  1. $baza=mysql_connect("$nhost", "$nuser", "$nhaslo") or die ("Błąd: nie można połączyć się z mysqle-em");
  2. $odpbaza=mysql_select_db($nbaza, $baza) or die ("Błąd: nie można wybrać bazy danych $nazwadb");
  3.  
  4. if(isset($_POST['dodaj'])){
  5. $ins2 = @mysql_query("INSERT INTO faktury SET data_wprowadzenia='$data_wprowadzenia ', data_faktury='$data_faktury', nr_faktury='$nr_faktury', kwota_brutto='$kwota_brutto', kooperant='$kooperant', rodzaj_wydatku_id='$wydatki', wydatek_sprzedaz_id='$typ', uwagi='$uwagi'");
  6. }
  7.  
  8. if(isset($_POST['edit'])){
  9. $ins = @mysql_query("UPDATE faktury SET data_wprowadzenia='$data_wprowadzenia ', data_faktury='$data_faktury', nr_faktury='$nr_faktury', kwota_brutto='$kwota_brutto', kooperant='$kooperant', rodzaj_wydatku_id='$wydatki', wydatek_sprzedaz_id='$typ', uwagi='$uwagi' WHERE id=$lp");
  10. }
  11.  
  12. if($_GET['del']){
  13. $id_usun=$_GET['del'];
  14. $result_del=mysql_query("DELETE FROM faktury WHERE id=$id_usun");
  15. $odpsql=mysql_query($result_del);
  16. }

I poniższa instrukcja wywala błąd tylko przy dodawaniu, że "Nie udało się dodać!"

  1. if(isset($_POST['dodaj'])){
  2. if($ins2) echo "<b class=\"ok\">Dodano fakturę</b>";
  3. else echo "<b class=\"blad\">Nie udało się dodać!</b>";
  4. }
  5.  
  6. if(isset($_POST['edit'])){
  7. if($ins) echo "<b class=\"ok\">Poprawiono fakturę</b>";
  8. else echo "<b class=\"blad\">Nie udało się poprawić!</b>";
  9. }
  10.  
  11. if(isset($_GET['del'])){
  12. if($result_del) echo "<b class=\"ok\">Faktura została usunięta</b>";
  13. else echo "<b class=\"blad\">Nie udało się usunąć<br /> </b>";
  14. }

Dodam tylko, ze całość działa na serwerze plików Synology w wewnętrznej sieci.

Ten post edytował pjanek 7.04.2020, 20:26:48
Go to the top of the page
+Quote Post
viking
post 8.04.2020, 06:02:04
Post #2





Grupa: Zarejestrowani
Postów: 5 644
Pomógł: 961
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Włącz raportowanie błędów, usuń @.


--------------------
Go to the top of the page
+Quote Post
Rysh
post 8.04.2020, 08:00:11
Post #3





Grupa: Zarejestrowani
Postów: 817
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


Przypięty wątek od 10 LAT!!!!!!!!
Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy

Cytat
Usuń również wszystkie małpy (@) z kodu. Powodują one wyciszenie błędów i ich po prostu nie widać - a ty jako początkujący masz widzieć wszystkie błędy.
Jeśli po zobaczeniu błędów, nadal nie wiesz o co chodzi, wklej nam dokładnie te błędy, z zaznaczeniem lini w kodzie, której to błąd dotyczy.


--------------------
Go to the top of the page
+Quote Post
pjanek
post 8.04.2020, 15:41:18
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.03.2007

Ostrzeżenie: (0%)
-----


Dziękuje Panowie za zainteresowanie. Otóż po usunięciu @ nie wyświetla żadnych błędów oprócz tego Nie udało się dodać!.
Włączyłem jeszcze:
  1. ini_set('display_errors', 1);

Ale tu pokazuje błędy typu Notice: Undefined index: del in /volume1/web/www/rzis.php on line 209 a w lini 209 mam
  1. if($_GET['del']){

I w zasadzie wszędzie gdzie mam zmienną $_GET pokazuje powyższy błąd.
Ale moim skromnym zdaniem to nie błędy typu Notice są przeszkodą tylko...., no właśnie nie wiem co.
Ale dziwi mnie fakt, że UPDATE i DELETE w tym samym kodzie, na tym samym połączeniu działają a INSERT nie!
Go to the top of the page
+Quote Post
nospor
post 8.04.2020, 16:16:11
Post #5





Grupa: Moderatorzy
Postów: 35 315
Pomógł: 5948
Dołączył: 27.12.2004




Odeslano cie do przypietego tematu. Tam masz napisane wiecej co masz zrobic, np. jak wyswietlic potencjalny blad z bazy danych, czego aktualnie nie robisz. Zrob wiec to.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pjanek
post 9.04.2020, 20:25:49
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.03.2007

Ostrzeżenie: (0%)
-----


Dziękuję za sugestie odnośnie zgłębienia mojej wiedzy, chętnie z tego skorzystałem. A więc sprawa przedstawia się następująco:
1. Środowisko pracy - to serwer plików synology, Apache Server 2.2, mysql to MariaDB i wersja php 5.6
2. Po włączeniu wyświetlania błędów
  1. ini_set('display_errors','1');

Pokazują się błędy ale jak wspominałem wcześniej typu Notice - do usunięcia ale w późniejszym terminie.
usunąłem również znak @ przed mysql_query, ale to nie wiele dało.
3. Włącvzyłem również
  1. mysql_query($ins) or die('BŁĄD:'.mysql_error());
i sprawdzanie wartości zmiennych
i tu już mam informacje o błędach, tylko nie wiem jak je wyeliminować. W skrócie to mam tak
  1. if(isset($_POST['dodaj'])){
  2. var_dump($lp);
  3. var_dump($data_wprowadzenia);
  4. var_dump($data_faktury);
  5. var_dump($nr_faktury);
  6. var_dump($kwota_brutto);
  7. var_dump($kooperant);
  8. var_dump($wydatki);
  9. var_dump($typ);
  10. var_dump($uwagi);
  11.  
  12.  
  13. $baza=mysql_connect("$nhost", "$nuser", "$nhaslo") or die ("Błąd: nie można połączyć się z mysqle-em");
  14. $odpbaza=mysql_select_db($nbaza, $baza) or die ("Błąd: nie można wybrać bazy danych $nbaza");
  15. $ins = mysql_query("INSERT INTO faktury SET data_wprowadzenia='$data_wprowadzenia ', data_faktury='$data_faktury', nr_faktury='$nr_faktury', kwota_brutto='$kwota_brutto', kooperant='$kooperant', rodzaj_wydatku_id='$wydatki', wydatek_sprzedaz_id='$typ', uwagi='$uwagi'");
  16.  
  17. mysql_query($ins) or die('BŁĄD:'.mysql_error());
  18. }

i po wysłaniu danych z formularza (name="dodaj") pojawiają się informacje o zmiennych i błąd:
  1. string(2) "51"
  2. string(10) "2020-04-09"
  3. string(10) "2020-04-09"
  4. string(6) "125/25"
  5. string(4) "1111"
  6. string(1) "7"
  7. string(1) "7"
  8. string(1) "1"
  9. string(4) "test" BŁĄD:Query was empty

i oczywiście dane nie zostały zapisane.

Zrobiłem ten sam test na edycji danych, która działa i również mam informacje o zmiennych i błąd
  1. string(2) "50"
  2. string(10) "2019-06-25"
  3. string(10) "2019-06-25"
  4. string(9) "2019/0111"
  5. string(9) "125600.00"
  6. string(1) "3"
  7. string(1) "1"
  8. string(1) "1"
  9. string(5) "coś6" BŁĄD:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1' at line 1

tyle, że z tą różnica, że mimo błędu dane zostały zaktualizowane.
Szczerze mówiąc te błędy nic mi nie mówią, oprócz tego, że zapytanie jest puste. Więc proszę o Waszą interpretacje tych błędów.
Go to the top of the page
+Quote Post
viking
post 9.04.2020, 20:53:01
Post #7





Grupa: Zarejestrowani
Postów: 5 644
Pomógł: 961
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Tu akurat dublujesz dwa razy mysql_query:
mysql_query($ins) or die('BŁĄD:'.mysql_error()); //$ins to już mysql_query


--------------------
Go to the top of the page
+Quote Post
pjanek
post 9.04.2020, 21:07:11
Post #8





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.03.2007

Ostrzeżenie: (0%)
-----


Ok!, ale pomijając fakt że zdublowałem mysql query to dzięki temu że użyłem mysql_error() dowiedziałem się że mam błąd, który uniemożliwia mi wstawienie rekordu do bazy. I może na tym skupmy uwagę.
Go to the top of the page
+Quote Post
viking
post 10.04.2020, 05:24:02
Post #9





Grupa: Zarejestrowani
Postów: 5 644
Pomógł: 961
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nic się nie dowiedziałeś bo źle napisałeś kod.


--------------------
Go to the top of the page
+Quote Post
pjanek
post 10.04.2020, 19:18:59
Post #10





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.03.2007

Ostrzeżenie: (0%)
-----


poprawiłem kod
  1. $ins = mysql_query("INSERT INTO faktury SET data_wprowadzenia='$data_wprowadzenia ', data_faktury='$data_faktury', nr_faktury='$nr_faktury', kwota_brutto='$kwota_brutto', kooperant='$kooperant', rodzaj_wydatku_id='$wydatki', wydatek_sprzedaz_id='$typ', uwagi='$uwagi'");

I mysql_error() wyrzucił błąd, doesn't have a default value. Zmieniłem to ustawienie w sql-u na NULL i zadziałało.
Nie bardzo wiem co mu to przeszkadzało, skore inne kolumny mają ustawienie Brak, ale najważniejsze, że zadziałało i posunąłem się do przodu.
Dziękuję za naprowadzenie.

Ten post edytował pjanek 10.04.2020, 19:47:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.05.2020 - 09:18