Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie MYsql, Zapytanie MYsql - dodanie rekordu z pozycjami z formularza
GranDi88
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Witam,

Mam mały problem z wykonaniem zapytania dodania do bazy danych rekordu z danymi nadesłanymi z formularza. Wszystko działa poprawnie, dane z pól formularza przesyłane są do pliki php, połączenie z bazą danych udaje się nawiązac, wybrać bazę też idzie bez problemu natomiast skrypt zwraca błąd podczas dodania rekordu.
Tak wygląda kod odpowiadający za połączenie z bazą danych oraz dodaniem rekordu:
  1. <?php
  2. $polacz = mysql_connect ("adres serwera", "login", "hasło")
  3.    or die("BLAD: nie mozna sie polaczyc z serverem MySQL");
  4.  
  5. mysql_select_db("nazwa_bazy")
  6.    or die("Nie mozna wybrac danej bazy danych");
  7.  
  8. $zapytanie = ("INSERT INTO tabela(id, status)
  9.           VALUES ('$id', '$status')");
  10. $wykonaj = mysql_query($zapytanie)
  11.    or die("Nie mozna dodac rekordu");
  12. mysql_close($polacz);
  13. ?>

Tak mam zczytane pola z formularza:
  1. <?php
  2. $status = $_POST['status'];
  3. ?>

Bardzo proszę o pomoc w kwesti niechęci działania tegoż skrypcika. Ja wypróbowałem już chyba wszystkie co tylko przyszło mi do głowy.
Z góry dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
webasek
post
Post #2





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


A gdzie pobierasz id? Pewnie jest to pole auto_increment? Wię jeśli tak to wystarczy zrobić:

  1. INSERT INTO tabela (STATUS) VALUES ('$status')
Go to the top of the page
+Quote Post
nevt
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


status jest słówkiem zastrzeżonym w MySQL, więc musisz dodać `odwrócone apostrofy` do nazw tabel i pól:
  1. INSERT INTO `tabela` (`id`, `status`) VALUES ('$id', '$status');

powodzenia.
Go to the top of the page
+Quote Post
GranDi88
post
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Tak pole id to auto_increment. Niestety jednak sposób który podałeś również nie działa. Skrypt zwraca mi ten sam błąd. (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Niestety, ten sposób też nie działa. Nic nie dało dodanie tych apostrofów. Dalej otrzymuje ten sam błąd.
Go to the top of the page
+Quote Post
melkorm
post
Post #5





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


może napsizesz jaki błąd ? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
GranDi88
post
Post #6





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Cytat(melkorm @ 1.10.2008, 19:07:00 ) *
może napsizesz jaki błąd ? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


Błąd dodania rekordu - określona w kodzie jego treść brzmi "Nie mona dodac rekordu"
Go to the top of the page
+Quote Post
melkorm
post
Post #7





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


wywal or die i wklej nam błąd ?
Go to the top of the page
+Quote Post
GranDi88
post
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Cytat(melkorm @ 1.10.2008, 19:11:15 ) *
wywal or die i wklej nam błąd ?


Najnowsza mozila bo wywaleniu or die wyświetliła:
"Błąd wczytanie strony"
Błąd kodowania zawartości
Otwierana strona nie może zostać wyświetlona, ponieważ używa nieprawidłowych lub nieobsługiwanych metod kompresji.
Otwierana strona nie może zostać wyświetlona, ponieważ używa nieprawidłowych lub nieobsługiwanych metod kompresji.

* Prosimy poinformować właścicieli witryny o tym problemie.

Natomiast Internet Explorer wyświatla komunikat: :Nie moża wyświetlić tej strony: (pliku php podanego w action w formularzu)

Widzę że trochę problematyczny jest ten wątek ;/. Do tej pory zawsze tak robiłem i zawsze było ok. Tym razem jednak nie jest. Czekam na dalsze pomocne propozycje.

Ten post edytował GranDi88 1.10.2008, 18:32:44
Go to the top of the page
+Quote Post
nrafal
post
Post #9





Grupa: Zarejestrowani
Postów: 24
Pomógł: 6
Dołączył: 23.09.2008
Skąd: Chorzów

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


Zamiast konstrukcji z die daj:
  1. <?php
  2. mysql_query($zapytanie) or print mysql_error();
  3. ?>


Co wyszło?

Ten post edytował nrafal 1.10.2008, 19:41:09
Go to the top of the page
+Quote Post
GranDi88
post
Post #10





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Cytat(nrafal @ 1.10.2008, 20:40:07 ) *
Zamiast konstrukcji z die daj:
  1. <?php
  2. mysql_query($zapytanie) or print mysql_error();
  3. ?>


Co wyszło?


Błąd:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''zamowienia' ('id', 'status', 'name', 'email', 'telefon', 'zamawiaml', 'pakietl'' at line 1

Pól w formularzu mam oczywiscie wiecej niż napisałem. Ale nawet w takiej opcji jak podałem nic nie działa.
Go to the top of the page
+Quote Post
nrafal
post
Post #11





Grupa: Zarejestrowani
Postów: 24
Pomógł: 6
Dołączył: 23.09.2008
Skąd: Chorzów

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


Hm, fajnie by było zobaczyć kompletne, wygenerowane zapytanie żeby Ci pomóc. Jak tak zatajasz pola itp to trochę wróżymy z fusów...

A id nie masz przypadkiem jako INT w bazie? Wtedy IMHO nie powinieneś brać go w apostrofy?
Go to the top of the page
+Quote Post
GranDi88
post
Post #12





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Przy opcji takiej jak podałem zaczynając temat (tylko dwa pola - id i status) uzyskuje błąd:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''zamowienia' ('id', 'status') VALUES ('', 'osoba prywatna' at line 1

Cytat(nrafal @ 1.10.2008, 20:53:51 ) *
A id nie masz przypadkiem jako INT w bazie? Wtedy IMHO nie powinieneś brać go w apostrofy?


Podałem zatem błąd przy opcji takiej jak opisałem w rozpoczeciu tematu. Teraz nie trzeba wróżyć z fusów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
ID zgadza się jest jako INT jednak nie rozumiem o co chodzi z 'IMHO'.
Go to the top of the page
+Quote Post
nrafal
post
Post #13





Grupa: Zarejestrowani
Postów: 24
Pomógł: 6
Dołączył: 23.09.2008
Skąd: Chorzów

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


Cytat(GranDi88 @ 1.10.2008, 20:57:38 ) *
Przy opcji takiej jak podałem zaczynając temat (tylko dwa pola - id i status) uzyskuje błąd:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''zamowienia' ('id', 'status') VALUES ('', 'osoba prywatna' at line 1


W pole ID typu int próbujesz wstawić w tej chwili pusty string ( '' ). Skoro ID jest auto_increment to nie musisz wstawiać nic i wtedy zapytanie wyglądałoby tak jak pisał webasek. Zwróć też uwagę na to, że nazwy pól powinny być w odwróconych apostrofach (` ) - to są te nad klawiszem tab, wg Twojego błędu wpisujesz tam zwykłe apostrofy...
Jeśli te ID jest puste przez przypadek to i tak wartość nie powinna być w apostrofach. Czyli w kodzie:
  1. <?php
  2. ... VALUES($id,'$status') ...
  3. ?>


Zamiast

  1. <?php
  2. ... VALUES('$id','$status') ...
  3. ?>


Cytat
ID zgadza się jest jako INT jednak nie rozumiem o co chodzi z 'IMHO'.


http://pl.wiktionary.org/wiki/IMHO ;-)
Go to the top of the page
+Quote Post
GranDi88
post
Post #14





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Niestety...

  1. <?php
  2. $zapytanie = ("INSERT INTO `zamowienia` (`status`)
  3. VALUES (`$status`)");
  4. $wykonaj = mysql_query($zapytanie)
  5. ?>

zwraca błąd:
Unknown column 'osoba prywatna' in 'field list'
  1. <?php
  2. $zapytanie = ("INSERT INTO zamowienia (`status`)
  3. VALUES (`$status`)");
  4. $wykonaj = mysql_query($zapytanie)
  5. mysql_close($polacz);
  6. ?>

zwrrca również błąd:
Unknown column 'osoba prywatna' in 'field list'
  1. <?php
  2. $zapytanie = ("INSERT INTO zamowienia (status)
  3. VALUES (`$status`)");
  4. $wykonaj = mysql_query($zapytanie)
  5. mysql_close($polacz);
  6. ?>

zwraca również ten sam błąd.
  1. <?php
  2. $zapytanie = ("INSERT INTO zamowienia (status)
  3. VALUES ($status)");
  4. $wykonaj = mysql_query($zapytanie)
  5. ?>

zwraca błąd:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'prywatna)' at line 2

Nic już z tego nie rozumiem. Każdy napisał coś, być może ja tego wszystko nie umiem złożyć dobrze w całość. Prosze o konkretny kod przygotowany na podstawie tego co podałem.
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. <?php
  2. $zapytanie = ("INSERT INTO zamowienia (`status`) VALUES ('$status')");
  3. $wykonaj = mysql_query($zapytanie)
  4. mysql_close($polacz);
  5. ?>

W takiej formie powinno zadziałać.
Go to the top of the page
+Quote Post
GranDi88
post
Post #16





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 1.10.2008
Skąd: Katowice

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


Niby działa... niby dlatego że do bazy danych informacje i owszem są zapisywane. Najnowszy firefox zwraca jednak treść Błąd kodowania zawartości.

OK, mój błąd. Wszystko działa poprawnie. Zapomniałem dodać linijki z np echo "gotowe";
WIELKIE DZIĘKI (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Soulast
post
Post #17





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

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


Chciałbym się podłączyć do tematu ponieważ mam nieco podobny problem z zapytaniem.

po rejestracji użytkownika przy pomocy mysql_error() wyrzuca mi błąd :
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1


A oto zapytanie :

  1. $add = mysql_query("INSERT INTO " . USER_TABLE . " ( `id` , `pseudo` , `mail` , `email` , `url` , `pass` , `niveau` , `date` , `activite` , `avatar` , `signature` , `rang` , `user_theme` , `user_langue` , `count`, `country` ) VALUES ( '" . $user_id . "' , '" . $pseudo . "' , '" . $mail . "' , '" . $email . "' , '' , '" . $cryptpass . "' , '" . $niveau . "' , '" . $date . "' , '' , '' , '' , '' , '' , '' , '', '" . $country . "' )");
  2. $req = mysql_query($add) OR die(mysql_error());


Pomimo błędu wyskakującego, wszystkie dane pomyślnie zostają dodane do tabeli...Więc skąd ten błąd?

Z góry dziękuje za wszelką pomoc...
Go to the top of the page
+Quote Post
Ramzaa
post
Post #18





Grupa: Zarejestrowani
Postów: 207
Pomógł: 17
Dołączył: 4.08.2009

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


Daj małpkę przed mysql_query i po problemie, a co do błędu, to nie jestem pewien, ale ja bym zrobił to tak:

  1. INSERT INTO `tabela` (id, pseudo, mail, email..) VALUES (null, '$pseudo', '$mail', '$email'..)
Go to the top of the page
+Quote Post
Mchl
post
Post #19





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Cytat(Ramzaa @ 4.08.2010, 07:27:39 ) *
Daj małpkę przed mysql_query i po problemie,


<facepalm>

W domu też śmieci pod dywan zamiatasz?


Soulast: Jeżeli zapytanie rzuciło błędem, to dane nie zostałyby zapisane do bazy. Mamy więc dwie możliwości.
1. Albo masz inne zapytanie które rzuca błędem
2. Albo te dane dodawane są w innym miejscu
Go to the top of the page
+Quote Post

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: 22.08.2025 - 11:42