Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

[Mysql MAMP] unknown column


  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 mac.s

mac.s
  • 31 postów
  • SkądWarszawa

Napisano 23 listopada 2006 - 17:38

Witam. Ostatio staram się skonfigurować sobie stanowisko pracy (xhtml, php, mysql) na macintoshu. Z powodzeniem zainstalowałem sobie serwery korzystając z pakietu MAMP i jestem w gruncie rzeczy zadowolony. Napotykam jednak na pewnien problem który właściwie uniemożliwia mi korzystanie z bazy danych.. Mianowicie skrypt napisany i poprawnie działający na PCcie (EasyPHP) na MAMPie zwraca nieoczekiwany dla mnie błąd. Serwer poprawnie łączy się i loguje do bazy MySql. Następnie otrzymuje proste zapytanie w postaci: 'SELECT * FROM `tabela` WHERE `kolumna`="'.$zmienna po czym zwraca błąd: #1054 - Unknown column '' in 'where clause' Ponieważ to samo działa na innym serwerze podejrzewam że to kwestia konfiguracji. Próbowałem już różnych rzeczy ale raczej w ciemno. Nie znam się zbytnio na ustawieniach Apacha więc proszę o pomoc w rozwiązaniu tego byćmoże małego problemu. Jeśli będą potrzebne jakieś informacje to służę. Teraz nie wiem zbytnio co mógłbym jeszcze dodać. Pozdrawiam.

#2 devilia

devilia
  • 1 872 postów
  • SkądDziałdowo, PL

Napisano 23 listopada 2006 - 18:13

tam te cudzyslowy mi sie nie podobaja (prawdopodobnie serwerowi tez).

#3 mac.s

mac.s
  • 31 postów
  • SkądWarszawa

Napisano 23 listopada 2006 - 19:14

Starałem się żeby nawet w przykładzie było w porządku, ale rzeczywiście o jeden za dużo tam został, ale to nie ma znaczenia, bo to jest wycięty i przecięty w pół kawałek kodu. Poza tym tak jak napisałem - gdzie indziej działa, a tu nie.. Może tak żeby naświetlić lepiej sytuację i odciągnąć kierunek podpowiedzi od literówek (bo nie one są tu winne) powiem, że takie zapytanie jak powyżej sprawdzałem na dwa sposoby, najpierw z poziomu skryptu i zaobserwowałem podany błąd w logu. Następnie sprawdziłem je bezpośrednio w PHPMyAdmin, oczywiście z podstawieniem odpowiednich wartości i również otrzymałem powyższy błąd, a nie błąd składni - zapytanie jest w porządku. Dlatego skłaniam się ku kwestii konfiguracji. Nadal wszelka pomoc będzie mile widziana. Pozdrawiam.

#4 devilia

devilia
  • 1 872 postów
  • SkądDziałdowo, PL

Napisano 23 listopada 2006 - 19:30

a sprobuj 'SELECT * FROM tabela WHERE kolumna= "'.$zmienna.'"' tzn nazwy kolumn bez apostrofow.

#5 kungfumiszcz

kungfumiszcz
  • 291 postów
  • SkądOlsztyn

Napisano 23 listopada 2006 - 20:02

najpierw pobierz zmienna, bo mamp nie ma domyslnie wlaczonych zmiennych globalnych, a wiec:

$zmienna=$_GET['zmienna'];

a samo zapytanie zmontowalbym tak:

$query 	= "	SELECT kolumna_1, kolumna_2, kolumna_3 FROM tabela WHERE kolumna_1=$zmienna";


#6 mac.s

mac.s
  • 31 postów
  • SkądWarszawa

Napisano 23 listopada 2006 - 21:54

a sprobuj 'SELECT * FROM tabela WHERE kolumna= "'.$zmienna.'"' tzn nazwy kolumn bez apostrofow.

próbowałem już wcześniej, ale aż jeszcze raz sprawdziłem - nic z tego

najpierw pobierz zmienna, bo mamp nie ma domyslnie wlaczonych zmiennych globalnych

zmienne są przypisane, wiem bo register_globals w EasyPHP też mam wyłączone. Tak czy inaczej sprawdziłem z włączonym register_globals i także nic.

a samo zapytanie zmontowalbym tak:

słuszna uwaga, na przyszłość.

Tymczasem problem pozostaje.

#7 kungfumiszcz

kungfumiszcz
  • 291 postów
  • SkądOlsztyn

Napisano 23 listopada 2006 - 23:09

pokaz kod, latwiej bedzie sie w tym rozeznac widzac istote problemu

#8 rami

rami
  • 184 postów

Napisano 23 listopada 2006 - 23:15

w zapytaniu (sprawdz jakos - echo czy cus) na pewno sa pojedyncze ciapki wokol wyciagnietej wartosci zmiennej? jesli nie ma, to ich braku wina pewno, jesli sa, to: wiem, ze zabrzmi to glupio, ale wez w zapytaniu nazwy tabel w nawias. MySQL w ktorejstam wersji mial jakiegos buga wlasnie tak sie objawiajacego, i te nawiasy pomagaly (wzglednie zmiana zapisu, jesli byly left joiny) drugi pomysl: jakie jest max_connections? bo jesli je osiagnales, to tez moze sie tak wykrzaczyc. czy raczej moglo przed ktorastam wersja 4. wez dopisz koniecznie, jesli odpukac nie masz dopisane, mysql_select_db przed samym zapytaniem.

#9 heretique

heretique
  • 334 postów
  • SkądKraków

Napisano 23 listopada 2006 - 23:54

Ależ to oczywiste :-)

A jakiego typu jest ta kolumna? Jeśli znakowego, to porównywaną wartość trzeba obtoczyć ciapkami odpowiedniego rodzaju, bo MySQL pomyśli że to też nazwa kolumny:

Coś takiego generował Twój kod:

SELECT * FROM tabela WHERE kolumna = wartosc

to jest ewidentnie warunek, gdzie wartość kolumny "kolumna" jest równa wartości kolumny "wartosc". A kolumna "wartosc" nie istnieje i bum!

Proponuję zainteresować się tą funkcją:

http://pl.php.net/ma...cape-string.php

Możesz skorzystać z rozwijania zmiennych w łańcuchu oganiczonym podwójnymi pazurkami "

"SELECT * FROM users WHERE user='$zmienna' "

albo lepiej dla bezpieczeństwa, jeśli wartość zmiennej pochodzi z URLa lub formularza:

$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));

#10 Maslav

Maslav
  • 128 postów

Napisano 24 listopada 2006 - 00:32

mac.s
Zrób echo zapytania które Ci się wysypuje.




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych