Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP/MySQL] UPDATE nie działa
sytluk
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Witam,

posiadam następujący problem, z którym nie mogę sobie poradzić. Mam zapytanie do bazy danych:

  1. $query = mysql_query("UPDATE dane SET czas='$dane_czasu'") or die('Nie działa: '.mysql_error());


kolumna 'czas' jest typu VARCHAR(100). Wszystko działa idealnie na localhoscie, jednak po wrzuceniu na hosting dane nie chcą sie aktualizować. Kiedy zamiast zmiennej wstawię jakąś wartość, zostanie ona zakutalizwana, jednak kiedy stosuję zmienną, dane pod tą zmienną już nie chcą się zaktualizować. Dla przykładu zastosowałem test:

  1. echo("UPDATE dane SET czas='$dane_czasu'");


Dostałem wynik:
  1. UPDATE dane SET czas='asdf'


Czyli pod zmienną jest wartość "asdf". Funkcja mysql_error() nie pokazuje żadnych błędów. Jednak dlaczego na zewnętrznym serwerze zmienna nie chce zadziałać, mimo ze na localhoscie wszystko pięknie działa?

Pozdrawiam.
Go to the top of the page
+Quote Post
jackraymund
post
Post #2





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

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


1 sprawdz czy połączenie z bazą jest poprawne
2 wejdz do bazy jak masz panel phpmyadmin to możesz przetestować tam swoje zapytania
3. może przyczyną jest brak `` pomiędzy dane? to jest tylda górna nie myl z '
"UPDATE `dane` SET czas='$dane_czasu'"

Ten post edytował jackraymund 28.10.2013, 23:13:27


--------------------
Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
Go to the top of the page
+Quote Post
no_face
post
Post #3





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


  1. echo("UPDATE dane SET czas = '" . $dane_czasu ."'");
Go to the top of the page
+Quote Post
sytluk
post
Post #4





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Połączenie z bazą danych jest dobre, ponieważ przy zastosowaniu:
  1. $query = mysql_query("UPDATE dane SET czas='jakies dane'") or die('Nie działa: '.mysql_error());

fraza "jakies dane" zapisuje się do bazy danych do kolumny 'czas'. Nie działa jedynie w przypadku wstawienia zmiennej.
W phpMyAdminie również wszystko działa dobrze, mysql_error(); nie wyświetla żadnych błędów składni.

Przy zastosowaniu:
  1. $query = mysql_query("UPDATE dane SET czas = '" . $dane_czasu ."'") or die('Nie działa: '.mysql_error());

niestety jest taka sama sytuacja, dane nie zapisują się w bazie.
Go to the top of the page
+Quote Post
no_face
post
Post #5





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Mala podpowiedz. Mozesz sie zainteresowac PDO lub mysqli w zamian za archaiczne mysql_query.

Wracajac do tematu. W zmiennej dane_czasu cos jest oczywiscie? smile.gif

Dorzuc tyldy jak porzednik wspomnial:

  1. echo("UPDATE `dane` SET `czas` = '" . $dane_czasu . "'");
Go to the top of the page
+Quote Post
sytluk
post
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Problem jest chyba ze zmiennymi przesyłanymi z formularza.

po zastosowaniu kodu:
  1. $przykladowa = 'jakas wartosc';
  2. $query = mysql_query("UPDATE `dane` SET `czas`='".$przykladowa."'") or die('Nie działa: '.mysql_error());

zmienna zapisuje się do bazy danych, jednak przy zastosowaniu:
  1. $moj_czas = $_POST['czas']; //pod zmienną jest wartość 'Rok'
  2. $query = mysql_query("UPDATE `dane` SET `czas`='".$moj_czas."'") or die('Nie działa: '.mysql_error());


w kolumnie 'dane' pojawia się puste pole.
Go to the top of the page
+Quote Post
no_face
post
Post #7





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Wypadaloby pochwalic sie w tym momencie formularzem.
Go to the top of the page
+Quote Post
sytluk
post
Post #8





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Już się chwalę:
  1. <form action="czas.php?action=wykonaj" method="POST">
  2. <center>
  3. <b>Czas:</b><br>
  4. <select name="czas[]">
  5. <option value="1 dzień">1 dzień</option>
  6. <option value="3 dni">3 dni</option>
  7. <option value="Tydzień">Tydzień</option>
  8. <option value="2 tygodnie"> 2 tygodnie</option>
  9. <option value="Miesiąc">Miesiąc</option>
  10. <option value="2 miesiące">2 miesiące</option>
  11. <option value="3 miesiące">3 miesiące</option>
  12. <option value="6 miesięcy">6 miesięcy</option>
  13. <option value="Rok">Rok</option>
  14. </select>
  15. </center>
  16. <input type="submit" class="submit" value="Zapisz ustawienia reklamy">
  17. </form>


  1. $moj_czas = $_POST['czas'][0]; //pod zmienną jest wartość 'Rok'
  2. $query = mysql_query("UPDATE `dane` SET `czas`='".$moj_czas."'") or die('Nie działa: '.mysql_error());


Problem jest o tyle dziwny, że sam kod testowany był już na kilku hostingach i tylko na jednym nie działa.
Go to the top of the page
+Quote Post
no_face
post
Post #9





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Wg kodu formularza wlasnie:

  1. $_POST['czas'][0]

winno byc, wczesniejszy zapis byl bez indexu 0, mysle, ze teraz juz wszystko jest okej.


Potestuj sobie co przesyla Ci sie przez _POST jezeli dalej bedziesz mial problemy.

  1. echo '<pre>';
  2. print_r($_POST);


Ten post edytował no_face 29.10.2013, 10:51:39
Go to the top of the page
+Quote Post
sytluk
post
Post #10





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Wcześniej napisałem "na szybko" i zapomniałem, ale w kodzie cały czas było ok
  1. echo(print_r($_POST));

daje:
  1. Array ( [czas_1] => Array ( [0] => Rok ))

Czyli z przesyłaniem zmiennej wszystko jest ok, tylko o dziwo MySQL'owi się to nie podoba. Czy może kodowanie znaków ma jakieś znaczenie? Jakoś to można sprawdzić?
Go to the top of the page
+Quote Post
no_face
post
Post #11





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Czlowiek glupieje na starosc. Kodowanie znakow zawsze ma znaczenie, jednak tutaj w tym przypadku, bardziej chodzi o cos innego. Tutaj widze zmienna czas_1, domyslam sie, ze tylko sie bawisz i testujesz manipulujac zmiennymi, jednak sprawdz czy masz spojnosc nazewnictwa smile.gif Pomysly mi sie wyczerpaly smile.gif
Go to the top of the page
+Quote Post
sytluk
post
Post #12





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Spójność nazewnictwa jest dobra, ponieważ ten sam plik wrzucony na inny serwer już działa i poprawnie zapisuje dane w bazie danych. Ja również już nie mam pojęcia co może być przyczyną.
Go to the top of the page
+Quote Post
phpion
post
Post #13





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




Wklej wynik:
  1. $query = "UPDATE `dane` SET `czas`='".$moj_czas."'";
  2. mysql_query($query) or die('Nie działa: '.mysql_error().', 'SQL: '.$query);
Go to the top of the page
+Quote Post
Turson
post
Post #14





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. <select name="czas[]">

[] jest niepotrzebne jak jest mozliwosc wybrania tylko jednej opcji
Go to the top of the page
+Quote Post
sytluk
post
Post #15





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Cytat(phpion @ 29.10.2013, 11:25:55 ) *
Wklej wynik:
  1. $query = "UPDATE `dane` SET `czas`='".$moj_czas."'";
  2. mysql_query($query) or die('Nie działa: '.mysql_error().', 'SQL: '.$query);

Po wykonaniu tego zapytania, nie ma żadnych błędów, jednak dane nie zapisały się w bazie danych.

Sprawdziłem również dla pola typu 'text', niestety problem jest taki sam. Jedynie dane z zmiennych utworzonych zaraz przed zapytaniem zapisują się w bazie danych.
Go to the top of the page
+Quote Post
no_face
post
Post #16





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Jak juz sie bawimy to podaj nam wynik tego:

  1. echo "UPDATE `dane` SET `czas`='".$moj_czas."'";


przy wyslaniu z formularza.
Go to the top of the page
+Quote Post
sytluk
post
Post #17





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Cytat(no_face @ 29.10.2013, 11:42:10 ) *
Jak juz sie bawimy to podaj nam wynik tego:

  1. echo "UPDATE `dane` SET `czas`='".$moj_czas."'";


przy wyslaniu z formularza.


Wynik:
  1. UPDATE `dane` SET `czas`='Rok'

Oczywiście wartość 'Rok' jest wybrana z formularza z listy smile.gif

W przypadku gdy ustawię:
  1. $moj_czas = 'Rok';
  2. echo "UPDATE `dane` SET `czas`='".$moj_czas."'";


Wartość 'Rok' zostanie zapisana w bazie danych bez żadnych problemów.
Go to the top of the page
+Quote Post
Turson
post
Post #18





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Spróbuj tak
  1. <select name="czas">

  1. $moj_czas = $_POST['czas']; //pod zmienną jest wartość 'Rok'
  2. $query = mysql_query("UPDATE `dane` SET `czas`='".$moj_czas."'") or die('Nie działa: '.mysql_error());
Go to the top of the page
+Quote Post
sytluk
post
Post #19





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Cytat(Turson @ 29.10.2013, 11:58:45 ) *
Spróbuj tak
  1. <select name="czas">

  1. $moj_czas = $_POST['czas']; //pod zmienną jest wartość 'Rok'
  2. $query = mysql_query("UPDATE `dane` SET `czas`='".$moj_czas."'") or die('Nie działa: '.mysql_error());

Niestety usunięcie z selecta nawiasów [] oraz usunięcie [0] ze zmiennej również nie pomogło.
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jesli kod z poprzedniego posta jest na 100% taki jak pokazujesz,to pokaz jeszcze co zwraca dokladnie print_r($_POST);


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

"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

2 Stron V   1 2 >
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 Aktualny czas: 21.08.2025 - 01:20