Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Problem ze skladnia SELECT
Forum PHP.pl > Forum > Bazy danych > MySQL
Huran
  1. <?php
  2. $wykonaj = mysql_query('SELECT $wartosc FROM `tablica` WHERE Login=\"'.$_SESSION[&#092;"USER_LOGIN\"].'\" LIMIT 1');
  3. ?>


Chce pobrac wylacznie kolumne o nazwie zapisanej w zmiennej $wartosc, jednakze jesli wstawiam tam zamiast gwiazdki zmienną pojawia sie przy probie mysql_fetch_array:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
tumczasty
może nie ma takiej kolumny w tej tabeli...

żeby dowiedzieć się czegoś więcej o tym błędzie, dopisz coś takiego:
  1. <?php
  2. ?>
Huran
Kod
Nieznana kolumna '$wartosc' w field list

Taka kolumna istnieje na pewno, zwrocilem tez uwage na wielkosc liter.
Jak mozna w dowolny sposob podmienic ta gwiazdke na zmienna? Mecze sie nad tym juz dluuuuugo i skonczyly mi sie pomysly sad.gif
spenalzo
Cytat(Huran @ 2004-08-11 20:54:19)
  1. <?php
  2. $wykonaj = mysql_query('SELECT $wartosc FROM `tablica` WHERE Login=\"'.$_SESSION[&#092;"USER_LOGIN\"].'\" LIMIT 1');
  3. ?>

Proponuje cofnąć się do podstaw php.
Hint: różnice pomiędzy " a '.
Huran
Moglbys na drodze wyjatku udzielic mi odpowiedzi, co zmienic w tym konkretnym wypadku? Ucze sie najlepiej na przykladach... zmarnowalem juz wiele godzin na probe znalezienia bledu i wiem, ze sam wiecej nie osiagne...

PS. To takze nie dziala poprawnie (to inna funkcja)...
Kod
'UPDATE `gracze` SET "'.$wartosc.'"="'.$wartosc.'"+"'.$ile.'" WHERE login="'.$_SESSION["USER_LOGIN"].'" LIMIT 1'
tumczasty
słuchaj uważnie, bo nie będę powtarzać...
różnica między cudzysłowem a apostrofem jest taka:
  1. <?php
  2. $wartosc=2;
  3. echo&#092;"kolory $wartosc n\"; // wyświetli \"kolory 2 [koniec linii]\"
  4. echo'kolory $wartosc n'; // wyświetli \"kolory $wartosc n'
  5. echo'kolory '.$wartosc; //wyświetli \"kolory 2\"
  6. ?>

czyli to, co w cudzysłowie, jest przetwarzane (przez co działa ciut wolniej), a to, co w apostrofie, zostaje (prawie) bez zmian

przykłady nt. tego, co w tym drugim przypadku:
  1. UPDATE gracze SET wartosc=wartosc+4 WHERE login='huran' LIMIT 1 #dobrze
  2. UPDATE `gracze` SET `wartosc`=`wartosc`+4 WHERE `login`='huran' LIMIT 1 #dobrze
  3. UPDATE `gracze` SET wartosc=wartosc+'4' WHERE login='huran' LIMIT 1 #dobrze
  4. UPDATE `gracze` SET `wartosc`=`wartosc`+'4' WHERE `login`='huran' LIMIT 1 #dobrze
  5. UPDATE `gracze` SET 'wartosc'='wartosc'+4 WHERE login=huran LIMIT 1 #zle!

czyli nazwy kolumn zawsze bez apostrofów: ' ' (ew. mogą być w tych odwrotnych: ` `)
Huran
Jestem niewymownie wdzięczny za okazaną pomoc. Poprawilem bledy i wszystko dziala, jak należy. Dodac nalezy, ze bylem święcie przekonany, że probowalem juz (metoda prob i bledow, niestety) skladni '.$costam.'
Teraz na pewno metoda prob i bledow odejdzie w odstawke smile.gif Jeszcze raz dziekuje.
mnc
hmm a co poradzicie mi na takie cos ?

  1. <?php
  2. $sql=&#092;"INSERT INTO user (user_name,password,email,remote_addr,confirm_hash,is_confirmed,permiss) \".
  3. &#092;"VALUES ('$user_name','\". md5($password1) .\"','$email','$GLOBALS[REMOTE_ADDR]','$hash','0','0')\";
  4. ?>


Nieznana kolumna 'permiss' w field list

a w bazie istnieje :E

zapytanie z sql :
  1. Wprowadzone rekordy: 1
  2. Id wstawionego wiersza: 1 (Wykonanie zapytania trwało 0.0008 sekund(y))
  3. zapytanie SQL:
  4. INSERT
  5. INTO user( user_name,
  6. PASSWORD , email, remote_addr, confirm_hash, is_confirmed, permiss )
  7. VALUES (
  8. '$user_name', '". md5($password1) ."', '$email', '$GLOBALS[REMOTE_ADDR]', '$hash', '0', '0'
  9. )
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.