Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nieznana kolumna [...] w where clause
Forum PHP.pl > Forum > Przedszkole
WMP
witam. Mam taki sobie kod:
  1. <?php
  2. $db -> Execute("UPDATE `sessions` SET 
  3. `session_user` = '0', 
  4. `session_is_permanent`='0' WHERE 
  5. `session_id`=".$this->session_id) or die($db -> ErrorMsg());
  6. ?>


I ten piekny kod wywala mi błąd: Nieznana kolumna 'd24a66740705e74a34b38bb358f3051c' w where clause

gdzie d24a66740705e74a34b38bb358f3051c to wartość
  1. <?php
  2. $this->session_id
  3. ?>


Siedzę od godziny wpatrując się w ten błąd, i za cholerę nie wiem co jest źle...
qrees
Jak chcesz podać coś jaki tekst, to musisz to umieścić w cudzysłowach, inaczej jest traktowane jako nazwa kolumny.
WMP
  1. <?php
  2. $db -> Execute("UPDATE `sessions` SET 
  3. `session_user` = '0', `session_is_permanent`='0' WHERE `session_id`=\"".$this->session_id."\";") or die($db -> ErrorMsg());
  4. ?>


również nie działa...
Hazel
  1. <?php
  2. [color="#0000bb"]$db [/color]-> Execute("UPDATE `sessions` SET 
  3. `session_user` = '0', `session_is_permanent`='0' WHERE `session_id`='".$this->session_id."'") or die($db -> ErrorMsg());
  4. ?>
Kayne
Jak piszesz z ' to pisz tak do końca:

`session_id`='".$this->session_id."'
WMP
teraz dostaję błąd:
Catchable fatal error: Object of class ADODB_mysql could not be converted to string in /var/www/web11/html/pkg/logowanie.php on line 17

Całość kodu wygląda tak:
  1. <?php
  2. function logout()
  3.  {
  4. global $db;
  5. $db -> Execute("UPDATE `sessions` SET 
  6. `session_user` = '0', `session_is_permanent`='0' WHERE `session_id`='".$this->session_id."'") or die($db -> ErrorMsg());
  7. return $db;
  8.  }
  9. ?>

I wywoływanie funkcji:
  1. <?php
  2. if (isset ($_GET['step']) && $_GET['step'] == 'out') {
  3. echo $session->logout(); echo "<br>";
  4. if ($session->logout === TRUE) {
  5. echo "Wylogowałeś się";
  6. } else {
  7. echo "wylogowanie nie udało się";
  8. }
  9. }
  10. ?>


Po bazie danych widzę, że nie została zmieniona...
Hazel
Może ten średnik na końcu ma znaczenie w egzekucji:

  1. <?php
  2. $db -> Execute("UPDATE `sessions` SET 
  3. `session_user` = '0', `session_is_permanent`='0' WHERE `session_id`='".$this->session_id."';") or die($db -> ErrorMsg());
  4. ?>
WMP
Nic nie daje... O to tabela:

  1. CREATE TABLE `sessions` (
  2. `session_id` varchar(32) NOT NULL,
  3. `session_user` varchar(255) NOT NULL,
  4. `session_time` varchar(255) NOT NULL,
  5. `session_is_permanent` varchar(1) NOT NULL,
  6. `ip` varchar(255) NOT NULL,
  7. PRIMARY KEY (`session_id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Kicok
Cytat
  1. <?php
  2. echo $session->logout();
  3. ?>


Co ty tu chcesz niby wyświetlić?
WMP
błąd którym pluje zapytanie, z return
bamboo
  1. <?php
  2. $db -> Execute("UPDATE `sessions` SET `session_user` = '0', `session_is_permanent`='0' WHERE `session_id`='$this->session_id'") or die($db -> ErrorMsg());
  3. ?>


to powinno działac, po co wogule te ". ." questionmark.gif tutaj nie są potrzebne...
nowotny
Cytat(bamboo @ 18.02.2008, 10:06:55 ) *
to powinno działac, po co wogule te ". ." questionmark.gif tutaj nie są potrzebne...

Zawsze są potrzebne... przyspiesza to działanie skryptu i pozwala uniknąć błędów...
bamboo
przepraszam, moja wina wina, myślaęłm że są przyczyną błędów bo sam często miałem z nimi jeden problem... ale niesą niezbędne, ja np w zapytaniu ich nieużyywam, jak mam zapytanie to poprostu $zmienna i tyle, żadnych apostrofów i cudzysłowów... a pozatym to i tak problem już chyba rozwiązany...
MajareQ
WMP to nie jest fragment klasy obsługi sesji? Bo jak tak to znasz moje GG - odezwij się tam z tym problem, k?
siemakuba
@MajareQ: nie wiem czy zauważyłeś, ale odgrzałeś kotleta z przed miesiąca. Na PW takie sprawy niech idą, k? :)

Cytat
a pozatym to i tak problem już chyba rozwiązany.

Zamykam więc.

pozdr.
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.