Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [MySQL][PHP] INSERT INTO nie działa

Napisany przez: pjanek 7.04.2020, 20:23:54

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=http://www.php.net/mysql_connect("$nhost", "$nuser", "$nhaslo") or http://www.php.net/die ("Błąd: nie można połączyć się z mysqle-em");
  2. $odpbaza=http://www.php.net/mysql_select_db($nbaza, $baza) or http://www.php.net/die ("Błąd: nie można wybrać bazy danych $nazwadb");
  3.  
  4. if(http://www.php.net/isset($_POST['dodaj'])){
  5. $ins2 = @http://www.php.net/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(http://www.php.net/isset($_POST['edit'])){
  9. $ins = @http://www.php.net/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=http://www.php.net/mysql_query("DELETE FROM faktury WHERE id=$id_usun");
  15. $odpsql=http://www.php.net/mysql_query($result_del);
  16. }

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

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

Napisany przez: viking 8.04.2020, 06:02:04

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

Napisany przez: Rysh 8.04.2020, 08:00:11

Przypięty wątek od 10 LAT!!!!!!!!
http://forum.php.pl/Jak_poprawnie_zadac_pytanie_oraz_przygotowac_srodowisko_pracy_t146215.html

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.

Napisany przez: pjanek 8.04.2020, 15:41:18

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. http://www.php.net/error_reporting(E_ALL);
  2. http://www.php.net/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!

Napisany przez: nospor 8.04.2020, 16:16:11

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.

Napisany przez: pjanek 9.04.2020, 20:25:49

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. http://www.php.net/error_reporting(E_ALL);
  2. http://www.php.net/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. http://www.php.net/mysql_query($ins) or http://www.php.net/die('BŁĄD:'.http://www.php.net/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(http://www.php.net/isset($_POST['dodaj'])){
  2. http://www.php.net/var_dump($lp);
  3. http://www.php.net/var_dump($data_wprowadzenia);
  4. http://www.php.net/var_dump($data_faktury);
  5. http://www.php.net/var_dump($nr_faktury);
  6. http://www.php.net/var_dump($kwota_brutto);
  7. http://www.php.net/var_dump($kooperant);
  8. http://www.php.net/var_dump($wydatki);
  9. http://www.php.net/var_dump($typ);
  10. http://www.php.net/var_dump($uwagi);
  11.  
  12.  
  13. $baza=http://www.php.net/mysql_connect("$nhost", "$nuser", "$nhaslo") or http://www.php.net/die ("Błąd: nie można połączyć się z mysqle-em");
  14. $odpbaza=http://www.php.net/mysql_select_db($nbaza, $baza) or http://www.php.net/die ("Błąd: nie można wybrać bazy danych $nbaza");
  15. $ins = http://www.php.net/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. http://www.php.net/mysql_query($ins) or http://www.php.net/die('BŁĄD:'.http://www.php.net/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 http://www.php.net/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.

Napisany przez: viking 9.04.2020, 20:53:01

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

Napisany przez: pjanek 9.04.2020, 21:07:11

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ę.

Napisany przez: viking 10.04.2020, 05:24:02

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

Napisany przez: pjanek 10.04.2020, 19:18:59

poprawiłem kod

  1. $ins = http://www.php.net/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'");
  2. http://www.php.net/echo http://www.php.net/mysql_error();

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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)