Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/sql] nie udało się: Unknown column '$id' in 'where clause'
Forum PHP.pl > Forum > Przedszkole
wojtekwro
  1. <?php
  2. if ($_SESSION['LOGGED'] != TRUE) {
  3.  echo 'nie masz uprawnień';
  4.  exit;
  5. }
  6. if ($_SESSION['pelno'] != 1) { echo 'brak uprawnień';}
  7. else {
  8. $id=$_POST['id'];
  9. $akcep=$_POST['akcep'];
  10. //laczenie z bd
  11. $connection = @mysql_connect('localhost', 'root', '')
  12. or die('brak polaczenia z BD');
  13. $db = @mysql_select_db("ankiety")
  14. or die('Nie mogę połączyć się z bazą danych');
  15. $sql = 'UPDATE `szkolenia` SET `akcep` = '1' WHERE `szkolenia`.`id` = $id';
  16. $sql = mysql_query($sql)
  17. or die("nie udało się: " . mysql_error());
  18.  
  19. }
  20. ?>


  1. szkolenia
  2. Pole Typ NULL Domy&#347;lnie
  3. id int(11) Nie
  4. temat varchar(50) Nie
  5. uczestnicy varchar(30) Nie
  6. DATA varchar(10) Nie yyyy-mm-dd
  7. organizator varchar(20) Nie
  8. doki varchar(30) Nie
  9. cena varchar(10) Nie
  10. akcep varchar(2) Nie
  11. oc1 varchar(2) Nie
  12. oc2 varchar(2) Nie


sypie mie takim błedem jak w topicu jeżeli usunę z zapytani sql= warunek where id=$id to zapisze mi wartość pola akcep dla całej kolumny =1 ja chcę aby robił to tylko dla id z poprzedniego skryptu. Brak pomysłu jak to obejśc poprawić proszę o pomoc.
nospor
No chyba wyraźnie masz napisane: Nieznana kolumna '$id' . TO juz mozna sie probowac domyslic, ze zamiast przekazac wartosc zmiennej $id to przekazales tekst '$id'

powinno byc:
  1. <?php
  2. $sql = 'UPDATE `szkolenia` SET `akcep` = '1' WHERE `szkolenia`.`id` ='. $id;
  3. ?>

Poczytaj w manualu jaka jest roznica miedzy apostrofem a cudzyslowiem
wojtekwro
jak poprawie to tak jak mówisz wali dalszym błędem
  1. <?php
  2. nie udało się: 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 ''1' WHERE `szkolenia`.`id` ='. $id' at line 1
  3. ?>


poniżej zamieszcze fragment skryptu, który przekazuje $id dalej

  1. <?php
  2. mysql_connect ("127.0.0.1","root","");
  3. mysql_select_db (ankiety);
  4. $res = mysql_query("SELECT id, akcep, oc1, oc2 FROM szkolenia WHERE id=$id LIMIT 1");
  5. $row= mysql_fetch_array($res);
  6. $wiersz['id']=$id;
  7. $wiersz['akcep']=$akcep;
  8. $wiersz['oc1']=$il2;
  9. $wiersz['oc2']=$il3;
  10. echo 'akceptacja: <b>';
  11. echo $akcep;
  12. $ile = $row["akcep"];
  13. $il2 = $row["oc1"];
  14. $il3 = $row["oc2"];
  15. $id = $row["id"];
  16.  
  17.  
  18. if($ile !='1')
  19. {echo '</b>oczekuje do akceptacji<br>';if ($_SESSION['pelno'] != 1) {} 
  20. else 
  21. {echo '<form action="akceptuj.php" method="post">
  22. <input type="hidden" name="id" value="$id">
  23. <input type="checkbox" name="akcep" value="1" />akceptacja szkolenia.<br>
  24. <input type="submit" value="dodaj" />
  25. </form>
  26. ';}
  27. ?>
nospor
po pierwsze: co ty mi za kod pokazujesz? Przeciez on ma sie nijak do komunikatu bledu. Blad masz w tym samym kodzie co pokazales na poczatku

po drugie: kombinacji Ctrl+C, Ctrl+v to też trzeba umiec uzywac. Zobacz co ja ci kazalem wstawic, a spojrz co ty wstawiles w swoim kodzie (oczywiscie wnioskuje, ze źle skopiowales, po komunikacie bledu, a nie po kodzie, gdyz kodu po poprawce nie pokazales)
wojtekwro
sorki źle wkleiłem ale jak wlepiłem tak jak kazałeś sypie tym samym
  1. <?php
  2. nie udało się: Unknown column '$id' in 'where clause'
  3. ?>
nospor
Cytat
sorki źle wkleiłem ale jak wlepiłem tak jak kazałeś sypie tym samym
Nie ma prawa.
Pokaz kod po moich zmianach.
Dla pewnosci zrob tez: echo $id; i powiedz mi co to wyswietla
Darti
użyj innych cudzysłowów, nie pojedynczych (') a podwójnych ("):
  1. <?php
  2. $sql = "UPDATE `szkolenia` SET `akcep` = '1' WHERE `szkolenia`.`id` = $id";
  3. ?>
albo daj $id poza stringa tak jak napisał Ci @nospor
jasiek
powinno pomoc :

$akcept="1";
$sql = "UPDATE szkolenia SET akcep = $akcept WHERE id=$id";
wojtekwro
  1. <?php
  2. if ($_SESSION['LOGGED'] != TRUE) {
  3.  echo 'nie masz uprawnień';
  4.  exit;
  5. }
  6. if ($_SESSION['pelno'] != 1) { echo 'brak uprawnień';}
  7. else {
  8. $id=$_POST['id'];
  9. $akcep=$_POST['akcep'];
  10.  
  11. //laczenie z bd
  12. $connection = @mysql_connect('localhost', 'root', '')
  13. or die('brak polaczenia z BD');
  14. $db = @mysql_select_db("ankiety")
  15. or die('Nie mogę połączyć się z bazą danych');
  16. $sql = 'UPDATE `szkolenia` SET `akcep` = '1' WHERE `szkolenia`.`id` ='. $id;
  17. $sql = mysql_query($sql)
  18. or die("nie udało się: " . mysql_error());
  19. print $sql;
  20. }
  21. ?>


echo $id; wyświetliło mi $id czyli nie pobiera zmiennej z poprzedniego skryptu questionmark.gif tam szukac błędu questionmark.gif
nospor
w tamtym skrypcie masz ten sam blad, czyli nie:
  1. <?php
  2. echo '<form action="akceptuj.php" method="post">
  3. <input type="hidden" name="id" value="$id">....
  4. ?>

a:
  1. <?php
  2. echo '<form action="akceptuj.php" method="post">
  3. <input type="hidden" name="id" value="'.$id.'">....
  4. ?>

Mowilem bys poczytal o roznicy miedzy ' a "
http://pl.php.net/manual/pl/language.types.string.php
wojtekwro
ruszyło dzięki wszystkim za pomoc a manuala przeczytam dzisiaj w domu ;]

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.