Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Błąd UPDATE bazy
Forum PHP.pl > Forum > Przedszkole
Arhimenrius
Hmm... pierwszy raz się spotykam z tego typu błędem, i mimo prób obejścia na wszelakie sposoby, jakoś nie daję rady:

  1. $query = "UPDATE `users` SET `uspassword`='$password' WHERE `usid`='$id'";
  2. $stmt = $db -> prepare("SELECT `usid`, `uspassword`, LENGTH(uspassword) FROM `users` WHERE LENGTH(uspassword)<32 ");
  3. $stmt -> execute();
  4. Linia 120: while($row = $stmt -> fetch(PDO::FETCH_ASSOC))
  5. {
  6. $password = password($row['uspassword']);
  7. $id = $row['usid'];
  8. $stmt = $db -> prepare($query);
  9. $stmt -> execute();

Zwraca błąd: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in E:\AppServ\www\ebibliotekarz\class\user.php:120
nospor
tego samego $stmt używasz zarówno do polecnia select jak i update. Problem w tym, że update leci w petli select, która to ciagle korzysta ze $stmt wiec je nadpisujesz. Mysl troche.

ps:
$query = "UPDATE `users` SET `uspassword`='$password' WHERE `usid`='$id'";
przecież zmienną $password ustawiasz dopiero w petli, wiec na tym etapie to zapytanie wyglada tak:
$query = "UPDATE `users` SET `uspassword`='' WHERE `usid`='$id'";
I tak już bedzie wygladac do konca.
Arhimenrius
tak, zauważyłem to chwilkę później. jednak po zmianie nazwy $stmt w ogóle się to nie wykonuje... dlatego próbowałem to podczepić pod tamto...

Dobra,
  1.  
  2. $stmt = $db -> prepare("SELECT `usid`, `uspassword`, LENGTH(uspassword) FROM `users` WHERE LENGTH(uspassword)<32 ");
  3. $stmt -> execute();
  4. Linia 120: while($row = $stmt -> fetch(PDO::FETCH_ASSOC))
  5. {
  6. $password = password($row['uspassword']);
  7. $id = $row['usid'];
  8. $stmttwo = $db -> prepare("UPDATE `users` SET `uspassword`='$password' WHERE `usid`='$id'");
  9. $stmttwo -> execute();


Po prostu $stmttwo nie widziało $query... no cóż. ale już działa. i tak dzięki.
nospor
Cytat
Po prostu $stmttwo nie widziało $query... no cóż.
Widziało $query tylko nie widziało zmiennych. Pisałem ci o tym w poprzednim poscie
Arhimenrius
Hmm.. a nie powinno w takim przypadku jak mówisz, podmienić na puste pole? bo w praktyce przecie zwracało "pustkę"
nospor
Tak, ale $id też ustawiałeś dopiero w petli wiec w praktyce miales tak
$query = "UPDATE `users` SET `uspassword`='' WHERE `usid`=''";
Czyli nie zmieniał ci zadnego rekordu, bo nie znajdowal rekordu o id '' smile.gif Poraz kolejny: mysl troche wink.gif
Arhimenrius
Hmm, no chyba że tak wink.gif w sumie racja smile.gif Dzięki za wyjaśnienie i miłego dnia ^^
nospor
Na przyszłość włącz wyświetlanie wszystkich błędów. Tu masz napisane jak:
Temat: Jak poprawnie zada pytanie
A unikniesz tak durnych błędów.
Arhimenrius
Ok. Po prostu mnie zdziwiło to o tyle, iż po odświeżeniu wykonywał się kod, jednak po 1 linijce i wywalało błąd. To u mnie wywołało nieco zamieszania wink.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.