2009-08-28 18 views
76

Wciąż dostaję MySQL Error # 1054, gdy próbuje wykonać tę kwerendę aktualizującą:nieznane kolumna „lista pole” błędu MySQL aktualizacji zapytania

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH 
SET MASTER_USER_PROFILE.fellow=`y` 
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID 
AND TRAN_USER_BRANCH.BRANCH_ID = 17 

To chyba jakiś błąd składni, ale próbowałem za pomocą sprzężenie wewnętrzne zamiast i inne zmiany, ale wciąż otrzymuję ten sam komunikat:

Unknown column 'y' in 'field list' 

Odpowiedz

109

Wypróbuj różne cytaty dla „y” jako znak identyfikator cytat pochodzi ze znaku odwróconego apostrofu („`”). W przeciwnym razie MySQL "myśli", że wskazujesz kolumnę o nazwie "y".

Zobacz także MySQL 5 Documentation

+0

Pomaga mi podziękować. –

15

Możecie sprawdzić swój wybór cytatów (użyj dwukrotnie/apostrofów dla wartości, smyczki, etc i backticks dla kolumny nazw).

Skoro chcesz tylko zaktualizować tabelę master_user_profile ja polecam zagnieżdżone zapytanie:

UPDATE 
    master_user_profile 
SET 
    master_user_profile.fellow = 'y' 
WHERE 
    master_user_profile.user_id IN (
     SELECT tran_user_branch.user_id 
     FROM tran_user_branch WHERE tran_user_branch.branch_id = 17); 
+0

Dzięki za sugestię, że wydaje się bardziej elegancka metoda. –

33

dołączyć dowolny ciąg być przekazywane do serwera mysql wewnątrz apostrofów; np .:

$name = "my name" 
$query = " INSERT INTO mytable VALUES (1 , '$name') " 

Należy zauważyć, że chociaż zapytanie jest zamknięta między cudzysłowy, to musi dołączyć dowolny ciąg w apostrofach.

+0

Dziękuję. Próbowałem dowiedzieć się, dlaczego moje zapytanie w PHP nie działa, wszystko, co musiałem zrobić, to dodać pojedyncze cytaty. – RiCHiE

+1

Wiem, że to stary post, ale czy byłbyś w stanie odpowiedzieć, dlaczego musisz umieścić cytaty? – RiCHiE

+0

@RiCHiE zwykle bezpieczniej jest używać ciągów. Również bardziej sensowne jest umieszczanie łańcucha między cytatami. Gdy na przykład korzystasz z funkcji takich jak SHA1, wstawiasz cudzysłowy do treści w stylu 'SHA1 ('$ var')' – George

2

W moim przypadku było to spowodowane niewidocznym końcowym odstępem na końcu nazwy kolumny. Sprawdź, czy naprawdę używasz "y" lub "y" zamiast tego.

0

Zapytanie jak THI będzie również powodować błąd

select table1.id from table2 

Jeżeli tabela jest określony w kolumnie wyboru, a nie zawarte w klauzuli FROM.

0

Podczas pracy nad kompilacją aplikacji .Net z kodem EF najpierw otrzymałem ten komunikat o błędzie podczas próby zastosowania migracji, gdzie miałem instrukcję Sql("UPDATE tableName SET columnName = value");.

Okazuje się, że błędnie wpisano nazwę kolumny.