Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Nie dziala update - gdzie problem?
Forum PHP.pl > Forum > Przedszkole
dolar
Zrobilam strone do edycji wpisow na blogu... nie dziala mi UPDATE. Wg mnie ma wskazany rekord, ktory ma zedytowac, wszystko powinno grac, a jednak cos jest nei halo. Oto kod :



  1.  
  2. include 'db.php';
  3. $baza = Db::getInstance();
  4.  
  5.  
  6. if (array_key_exists('login', $_SESSION) && array_key_exists('haslo', $_SESSION)) {
  7. $czyZalogowany = true;
  8. } else {
  9. header('Location: /logowanie.php');
  10. }
  11.  
  12. $akcja = $_GET['akcja'];
  13. $id = (int)$_GET['id'];
  14.  
  15. if ($akcja == 'edytuj' && $id > 0) {
  16.  
  17. $sql = 'SELECT * FROM blog WHERE id='.$id;
  18. $zapytanieSelect = mysqli_query($baza, $sql);
  19. $wpis = $zapytanieSelect->fetch_all(MYSQLI_ASSOC);
  20.  
  21. }
  22.  
  23. if (empty($wpis[0])) {
  24. $wpis = array(
  25. 0 => array(
  26. 'tytul' => '',
  27. 'tresc' => ''
  28. ));
  29. }
  30.  
  31. $tytul=$wpis[0]['tytul'];
  32. $tresc=$wpis[0]['tresc'];
  33.  
  34. if (array_key_exists('zapisz', $_POST)){
  35. $sql4 = "UPDATE `blog` SET `tytul`='$tytul',`tresc`='$tresc' WHERE id=`$id`";
  36. $edytuj = mysqli_query($baza, $sql4);
  37. echo "Post zedytowany";
  38. }




  1.  
  2. </head>
  3. <form method="post">
  4. <label for="tytul">Tytul:</label>
  5. <input type="text" id="tytul" name="tytul" value="<?php echo $tytul ?>"/>
  6. <br/>
  7. <label for="tresc">Tresc:</label>
  8. <textarea id="tresc" name="tresc"><?php echo $tresc ?>
  9. <br/>
  10. <input type="submit" name="zapisz" value="zapisz"/>
  11.  
  12.  
  13. </form>
  14. </body>
  15. </html>
  16.  
markonix
http://forum.php.pl/index.php?showtopic=44...t=0&start=0 punkt 2.
dolar
Niestety wyskakuje blad : Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future

viking
To się zdecyduj czego używasz, w tych zapytaniach powyżej jest wyraźnie mysqli.
dolar
No dobra fakt. Moj blad. Wyskoczylo mi :
Warning: mysqli_query() expects at least 2 parameters, 1 given in /blog/wpis.php on line 43

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /blog/wpis.php on line 43

Czyli ze nie widzi jakby moich zmiennych? $tytul i $tresc?
markonix
Nie, te błędy dotyczą argumentów przesyłanych do funkcji.
Zapytanie to drugi argument, a pierwszy to połączenie z bazą.
dolar
Dzisiaj peirwszy raz uzywam UPDATE i chyba jeszcze nad tym posiedze bo nei rozumiem gdzie jest w tej funkcji znajduje se argument - bo z tego o wyskakuje to jest b lad w argmentach gdzies? chce 2 a ja mam tylko 1?
viking
Jak czytać dokumentację PHP?

W podanych liniach wymagane jest przekazanie adekwatnej liczby parametrów.
dolar
Toc ma wszystko podane... :/. Skad ma edytowac, co ma edytowac... czytam i czytam i nie widze bledu, chyba ze moze w zapisie?
viking
A co jest w tej linii 43 pliku /blog/wpis.php?
dolar
Ok wyeliminowalam tamte bledy, ale nadal nie chce mi sie edytowac w bazie danych. Oto kod:

  1.  
  2.  
  3. include 'db.php';
  4. $baza = Db::getInstance();
  5.  
  6.  
  7. if (array_key_exists('login', $_SESSION) && array_key_exists('haslo', $_SESSION)) {
  8. $czyZalogowany = true;
  9. } else {
  10. header('Location: /logowanie.php');
  11. }
  12.  
  13. $akcja = $_GET['akcja'];
  14. $id = (int)$_GET['id'];
  15.  
  16. if ($akcja == 'edytuj' && $id > 0) {
  17.  
  18. $sql = 'SELECT * FROM blog WHERE id='.$id;
  19. $zapytanieSelect = mysqli_query($baza, $sql);
  20. $wpis = $zapytanieSelect->fetch_all(MYSQLI_ASSOC);
  21.  
  22. }
  23.  
  24. var_dump($wpis);
  25.  
  26. if (empty($wpis[0])) {
  27. $wpis = array(
  28. 0 => array(
  29. 'tytul' => '',
  30. 'tresc' => ''
  31. ));
  32. }
  33.  
  34. $tytul=$wpis[0]['tytul'];
  35. $tresc=$wpis[0]['tresc'];
  36.  
  37.  
  38. if (array_key_exists('zapisz', $_POST)){
  39. $sql4 = "UPDATE `blog` SET `tytul`=[$tytul],`tresc`=[$tresc] WHERE `id`=[$id],";
  40. $edytuj = mysqli_query($baza, $sql4);
  41. $zapytaj = mysqli_query($baza, $sql4) or die('Nastapil blad w polaczeniu w zapytaniu do bazy '. mysqli_error($baza));
  42. echo "Post zedytowany";
  43. }
  44.  
  45.  
viking
A co to niby za nawiasy [] w zapytaniu?
dolar
Wywalenie nawiasow nic nie pomaga - a bo tak probowalam na rozne sposoby ;p

  1. $sql4 = "UPDATE `blog` SET `tytul`=$tytul,`tresc`=$tresc WHERE `id`=$id,";
nospor
Masz cale mase bledow w zapytaniu.
Wyswietla ci w ogole ta linijka
or die('Nastapil blad w polaczeniu w zapytaniu do bazy '. mysqli_error($baza));
blad?
Jesli nie, to w ogole tam nei dochodzi.

ps: i po grzyba masz dwa razy wykonywanei to samo zapytanie ....
dolar
Niestety wywala taki blad:

Nastapil blad w polaczeniu w zapytaniu do bazyYou 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,`tresc`=tresc probna WHERE `id`=11,' at line 1
viking
Po id ma nie być przecinka, treść jest stringiem więc jako string ma byc potraktowany.
dolar
Hmm faktycznie bledu juz nie wywala ale dalej jakby sie nie edytuje... masakra ile czasu mi to schodzi tongue.gif

Dobra po wpisaniu na sucho tytulu i tresci edytuje! jupi!!! wiec pewnie cos jest nie tak ze zmiennymi moimi
nospor
Cytat
wiec pewnie cos jest nie tak ze zmiennymi moimi
No ba.... spojrz dokladnie na swoj kod. przeciez do bazy wkladasz dokladnie to samo co pare linijek wczesniej z bazy pobrales... wiec niby jakim cudem ma sie roznic.... Do bazy masz wkladac dane z forma, no nie?
dolar
Cytat(nospor @ 13.12.2016, 12:52:48 ) *
No ba.... spojrz dokladnie na swoj kod. przeciez do bazy wkladasz dokladnie to samo co pare linijek wczesniej z bazy pobrales... wiec niby jakim cudem ma sie roznic.... Do bazy masz wkladac dane z forma, no nie?


O BOZE! DZIALA!

  1. $tytul1=$_POST['tytul'];
  2. $tresc1=$_POST['tresc'];
  3.  
  4. $czyPoprawione=false;
  5.  
  6. if (array_key_exists('zapisz', $_POST)){
  7. $sql4 = "UPDATE `blog` SET `tytul`='$tytul1',`tresc`='$tresc1' WHERE `id`=$id";
  8. var_dump($tresc1);
  9. $edytuj = mysqli_query($baza, $sql4);
  10. $zapytaj = $edytuj or die('Nastapil blad w polaczeniu w zapytaniu do bazy'. mysqli_error($baza));
  11. $czyPoprawione=true;
  12. }


Dziekuje! biggrin.gif
nospor
A teraz idz i poczytaj o escapowaniu danych, albo o bindowaniu. Bo jak teraz wlozysz apostrof w jakiej pole forma to dostaniesz ladny blad.
dolar
To fakt, mam z tym problem, ide czytac, jeszcze raz dzieki! Super ze tutaj samemu sie dochodzi do swoich bledow 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.