Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]polecenie zadziałało, efektów nie widać
calendir
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.08.2009

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


Po użyciu tak skonstruowanego polecenia:
  1. mysql_query("UPDATE notes SET date='$date', title='$title', content='$content' WHERE id='$id'")

funkcja mysql_query() zwraca wartość TRUE, ale zmian wartości pól tabeli nie widać. Wartości zmiennych przekopiowane z wartości $_POST są inne niż pierwotne - sprawdzam sobie przez print_r().

Jeśli ktoś mógłby mi pomóc byłbym wdzięczny. (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
potreb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Skoro pobierasz z POST dane to;
  1. mysql_query("UPDATE notes
  2. SET date='".$_POST['date']."', title='".$_POST['title']."', content='".$_POST['content']."'
  3. WHERE id='".$_POST['id']."
  4. '") or die(mysql_error());


Ten post edytował potreb 23.08.2009, 20:06:01
Go to the top of the page
+Quote Post
calendir
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.08.2009

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


@potreb

Może niezbyt jasno się wyraziłem - wartości zmiennych z tablicy $_POST są przekopiowane do zmiennych podanych w zapytaniu ($title=$_POST['title']), jako że mój serwer MySQL nie lubi się ze zmiennymi w tym formacie ($_POST). Jak już tak od niechcenia przekopiowałem Twój kod to też się błędy posypały.

@erix

Nie wydawały mi się istotne, jako że dotyczyły zapytania zmodyfikowanego zdognie z zaleceniami potreba, ale jeśli chcesz to proszę:
  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 '='', title='test2 zz', content='test2 xx' WHERE id=''' at line 1


Ten post edytował calendir 23.08.2009, 20:24:13
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A może byś tak z łaski swojej podał te błędy?
Go to the top of the page
+Quote Post
Suh
post
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 27
Dołączył: 24.08.2007
Skąd: Tarnów

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


Z treści błędu, który podałeś przecież jasno wynika, że nie można odnaleźć wiersz który ma być zaktualizowany (WHERE id = "" (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ). Co więcej wartość pola "date" tak samo jest pusta, więc może sprawdź sobie czy dobrze dane wejściowe są przepisywane do zmiennych i przede wszystkim - czy są wysłane.

Edit.
W pierwszym poście wspomniałeś, że mysql_query() zwraca TRUE i jest to jak najbardziej poprawne bo zapytanie samo w sobie błędów nie zawiera i jest wysłane do serwera, a to że nic nie robi to już ma znaczenia dla powyższej funkcji.

Ten post edytował Suh 23.08.2009, 21:52:16
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To możesz przecież sprawdzić przez mysql_affected_rows...
Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Znając życie, to pewnie znowu się mota baza na apostrofach. Spróbuj walnąć:
  1. mysql_query("UPDATE notes SET date='".$date."', title='".$title."', content="'.$content."' WHERE id=".$id)
Wiem, że podwójne uruchamiąja interpreter, ale potem można je zamienić na pojedynczy i przy zmiennych je escape'ować. Ważne by sprawdzić czy to one nie broją (IMG:style_emoticons/default/smile.gif) Potem by trzeba było w razie czego sprawdzać przesyłane do update dane. Mogą one przecież też nie być escape'owane ze znaków specjalnych i potraktowanie je dafunkcją mysql_real_escape_string da efekt oczekiwany. Może też zawsze być problem z przetwarzaniem tych danych i wchodzą jako puste, co sugeruje podany tutaj błąd.
Go to the top of the page
+Quote Post
calendir
post
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.08.2009

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


Wczoraj wysypała mi się wirtualna maszyna na której tworzyłem skrypt. Po reinstalacji systemu i lokalnych serwerów skrypt działa bezbłędnie. Przyczyną błędów mógł być uszkodzony system plików.

Dziękuję wszystkim za sugestie i dobre chęci. (IMG:style_emoticons/default/tongue.gif)

Temat do zamknięcia. (IMG:style_emoticons/default/smile.gif)
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: 24.08.2025 - 22:39