Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]polecenie zadziałało, efektów nie widać
Forum PHP.pl > Forum > Przedszkole
calendir
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. sad.gif
potreb
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());
calendir
@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
erix
A może byś tak z łaski swojej podał te błędy?
Suh
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 = "" questionmark.gifquestionmark.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.
erix
To możesz przecież sprawdzić przez mysql_affected_rows...
thek
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ą 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.
calendir
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. tongue.gif

Temat do zamknięcia. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.