Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie UPDATE
Forum PHP.pl > Forum > PHP
triti
Cześć,
mam teoretyznie bardzo proste zapytanie do bazy dancyh, ale gdzieś wkradł się błąd i od kilku dni nie mogę znaleźć.
Oto kod:

  1. <?
  2. include_once "prv/auth_mod9.php";
  3. include_once "prv/config.php";
  4.  
  5. $akcja=$_POST["akcja"];
  6.  
  7. $data=$_POST["data"];
  8. $osoba=$_POST["osoba"];
  9. $FV=$_POST["FV"];
  10. $FVZ=$_POST["FVZ"];
  11. $mobo=$_POST["mobo"];
  12. $mobog=$_POST["mobogwar"];
  13. $proc=$_POST["proc"];
  14. $procesor=$_POST["procesor"];
  15. $procg=$_POST["procgwar"];
  16. $ram=$_POST["ram"];
  17. $ramg=$_POST["ramgwar"];
  18. $dysk=$_POST["dysk"];
  19. $dyskg=$_POST["dyskgwar"];
  20. $naped=$_POST["naped"];
  21. $napedg=$_POST["napedgwar"];
  22. $graf=$_POST["graf"];
  23. $grafg=$_POST["grafgwar"];
  24. $obudowa=$_POST["obudowa"];
  25. $obudowag=$_POST["obudgwar"];
  26. $cena=$_POST["cena"];
  27.  
  28. $nazwa=$_POST["nazwa"];
  29. $nr=$_POST["nr"];
  30.  
  31.  
  32. $up=sprintf('UPDATE komputery SET
  33. Data="%s",
  34. FV="%s",
  35. FVZ="%s",
  36. Procesor="%s",
  37. Proc="%s",
  38. ProcGwar="%s",
  39. RAM="%s",
  40. RAMGwar="%s",
  41. Nazwa="%s",
  42. Cena="%s",
  43. Osoba="%s",
  44. Dysk="%s",
  45. DyskGwar="%s",
  46. Naped="%s",
  47. NapGwar="%s",
  48. MOBO="%s",
  49. MOBOGwar="%s",
  50. Grafika="%s",
  51. GrafGwar="%s",
  52. Obudowa="%s",
  53. ObudGwar="%s",
  54.  
  55. WHERE Lp="%d" ',
  56.  
  57. $data,
  58. $FV,
  59. $FVZ,
  60. $proc,
  61. $procesor,
  62. $procgwar,
  63. $ram,
  64. $ramg,
  65. $nazwa,
  66. $cena,
  67. $osoba,
  68. $dysk,
  69. $dyskg,
  70. $naped,
  71. $napedg,
  72. $mobo,
  73. $mobog,
  74. $graf,
  75. $grafg,
  76. $obudowa,
  77. $obudowag,
  78. $nr
  79. );
  80. $upd=$db->query($up) or die('Błąd');
  81. echo "Zakończono sukcesem<br>";
  82. echo "<button onclick=\"self.close()\">ZAMKNIJ</button>";
  83.  
  84. ?>


Wyskakuje 'Błąd'.
zmienna $db to oczywiście PDO.

Może Wy coś znajdziecie,
pzdro
nospor
Zamiast nic nie mowiacego BLAD wyswietl blad zapytania...
triti
Nie wyskakuje żaden błąd w oknie przeglądarki. Pojawia się ten dalszy komunikat, czyli zakończono sukcesem, ale w bazie danych zmiany nie zostały wprowadzone.
Po to wprowadzięłm 'or die', żeby znaleźć miejsce błędu
sazian
fajnie że już wiesz gdzie jest błąd
teraz sprawdź co to za błąd
http://php.net/manual/en/pdo.errorinfo.php
lub wyświetl zapytanie

edit
tu ObudGwar="%s",
triti
Wynika z tego że zmienna $nr=0...
Ale kiedy zrobię echo $nr ma ono właściwą wartość różną od 0

Nice!
Głupi przecinek tongue.gif

Nadal jest problem, ponieważ Lp ciągle jest równa 0 i nie robi updatu rekordu w bazie danych
sazian
echo $up;
var_dump($_POST);
triti
poprawnie, string(3)

Jest problem, coś się przesunęło:

UPDATE komputery SET Data="0000-00-00", FV="", FVZ="", Procesor="", Proc="", ProcGwar="", RAM="", RAMGwar="", Nazwa="", Cena="fddfdf-05-107", Osoba="", Dysk="", DyskGwar="", Naped="", NapGwar="", MOBO="", MOBOGwar="", Grafika="", GrafGwar="", Obudowa="", ObudGwar="" WHERE Lp="0"
sazian
a var_dump ?
triti
No var_dump jest poprawny typu string. Zmieniłem jeszcze Lp="%s" żeby sprawdzić, ale bez efektów.
Wydaje mi się, że w którymś miejscu się po prostu przesunęły zmienne względem kolumn w tabeli.
Jakiś przecinek, albo co.

Uzupełniłem inputy nazwami pól. Wszystko się rozjechało:
UPDATE komputery SET Data=0000-00-00, FV="2014-05-06", FVZ="FV", Procesor="FVZ", Proc="proc1", ProcGwar="proc2", RAM="", RAMGwar="ram", Nazwa="", Cena="fddfdf-05-107", Osoba="netto", Dysk="osoba", DyskGwar="dysk", Naped="", NapGwar="nap", MOBO="", MOBOGwar="mobo", Grafika="", GrafGwar="graf", Obudowa="", ObudGwar="obud" WHERE Lp=""

==NAPRAWIŁEM==
Wystarczyło Data ustawić na %s zamiast format 0000-00-00.
Dzięki za pomoc. Pozdrawiam
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.