Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> INSERT raz dziala raz nie :(
KRIS_PL
post
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:

  1. @ $db = mysql_pconnect("localhost", "root", "");
  2. IF (!$db)
  3. {
  4. echo "Błąd: Nie można połączyć się z bazą danych. Spróbuj później.";
  5. exit;
  6. }
  7. mysql_select_db("orders");
  8. $query = "INSERT INTO _order (data, out_ofert, out_prov, prov_address, nb_of_ord, text_ord, apply_message, our_person, apply_or_no, servisco, year_of_ord, cena) VALUES (NOW(), '$out_ofert', '$out_prov', '$prov_address', NULL, '$text_ord', '$apply_text', '$facet', '3', '$servisco', 2007, '$cena')";


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





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:

  1. <?php
  2. // .. wczesniejszy kod
  3.  
  4. // wszedzie gdzie moga wystapic dziwne znaki typu apostrof i cudzyslow
  5. // na przyklad:
  6.  
  7. $text_ord = mysql_escape_string($text_ord);
  8. $prov_address = mysql_escape_string($prov_address);
  9.  
  10. $query = "INSERT INTO _order (data, out_ofert, out_prov, prov_address, nb_of_ord, text_ord, apply_message
    , our_person, apply_or_no, servisco, year_of_ord, cena) VALUES (NOW(), '$out_ofert', '$out_prov', '$prov_address', NULL, '$text_ord', '$apply_text', '$facet', '3', '$servisco', 2007, '$cena')"
    ;
  11. ?>


.. ale na pewno najwięcej o błędzie powie Ci mysql_error()
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 01:59