![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 29.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam PHP 5.2.5 + IIS 5 na Windows2000Server + MySql 5. I taki insert:
Klient wypełnia w formularzu większość zmiennych i one przechodzą, sprawdzałem echem, ale zdarza się tak i nie ma na to reguły, że rekord nie jest dodawany, mimo że zmienne przechodzą to mysql_insert_id() = 0 i kiła. Podejrzewam pole "nb_of_or' i ten NULL, pole jest autoincrement i wcześniej (na Mysql 3, PHP4 i Apache mialam zamiast: NULL, tylko: ' ' i rekord się dodawał) po migracji z Apache na IIS5 PHP 5.2.5 i MYSQL 5 zmieniłem to: ' ' na NULL bo był właśnie taki efekt że insert się wywalal na tym, ale problem nie zniknął do końca (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ma ktoś jakis pomysł? Ten post edytował KRIS_PL 6.12.2007, 11:55:26 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Z Twojego tłumaczenia trudno coś zrozumieć.. jeśli nie działa insert to zrób obsługę błędów.
mysql_error() i zapisuj błędy do pliku |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 198 Pomógł: 3 Dołączył: 27.02.2007 Skąd: Tczew Ostrzeżenie: (0%) ![]() ![]() |
Ja moje połączenie z bazą mam takie spróbuj na tym mi zawsze działa wstawi po prostu swoje dane i zapytanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jakby to nie było związane ze złym zapisem łączenia się z baza pomyślimy dalej (dopiero wstałem więc nie myślę (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) ale na oko wydaje mi się że to zapytanie jest coś nie teges i z reguły właśnie zapytanie niesie za sobą czy coś się wyświetli czy nie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 29.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Do bazyłączy się poprawnie za każdym razem, w przeciwnym wypadku dostałbym błąd z tego kodu:
Ten post edytował KRIS_PL 6.12.2007, 12:38:55 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 198 Pomógł: 3 Dołączył: 27.02.2007 Skąd: Tczew Ostrzeżenie: (0%) ![]() ![]() |
nie znam się do końca na sql ale może tak to nul zapisac jak reszte
spróbować nie zaszkodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 29.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie znam się do końca na sql ale może tak to nul zapisac jak reszte 'NULL', '$text_ord', '$apply_text', '$facet', '3', '$servisco', 2007, '$cena'..... spróbować nie zaszkodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Taki 'NULL' nie przechodzi |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Jeśli pole może być NULL to nie musisz podawać go w instrukcji insert. Pomiń deklaracje nb_of_or i NULL w zapytaniu.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
hmm zapytanie wygląda dobrze, więc skoro "raz wchodzi, raz nie" to problemem mogą być dane wejściowe. Jest szansa, że nie eskapujesz danych wejściowych, przez co może wywalać Ci zapytanie (syntax error).
tak jak napisał sf użyj mysql_error() (lub usuń '@' sprzed mysql_query()) i jeśli będą Ci wyskakiwały błędy typu `syntax error` to użyj mysql_escape_string() w następujący sposób:
.. ale na pewno najwięcej o błędzie powie Ci mysql_error() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
MySQL nie wykonuje zapytania jak baza/tabela/pole ma charset utf8, a dane sa w iso. To dotyczy sytuacji, gdy w zapytaniu jest jakas polska litera itp. Moze tez to bazy danych jest generowane zbyt dlugie zapytanie. Limity sa duze, ale moze nie wystarcza.
Ten post edytował franki01 6.12.2007, 19:00:34 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 29.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc, okazało się trywialne, mysql_error() wykazał że pole w bazie jest za krótkie, i od czasu do czasu po prostu było out of range, w zależności ile user znaków napisał, co ciekawe w wersji MySql 3, (bo z takiej migrowałem do MySql 5), też takie sytuacje miały miejsce, ale z automatu obcinał od końca dane i ładowal do bazy bez problemów, teraz jak przejrzałem starą to rzeczywiście dane są po obcinane, na szczęście -jest to zazwyczaj tylko oznaczenie waluty które nie było istotne, ale fakt że wciągał to do bazy i obcinał sobie tyle ile mu pasowało trochę mnie dziwi.
Ten post edytował KRIS_PL 10.12.2007, 08:19:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 20:38 |