2012-08-03 2 views
2

필자는 php 스크립트에서 mysql을 6 년 이상 사용하고 있지만 이와 같은 오류는 발생하지 않았습니다.MYSQL 구문 오류 - 왜 이런 일이 발생합니까?

SELECT `discount_items`.* FROM `discount_items` WHERE (position=1) AND (active=1) AND (end<=1344007212) AND (show=1) LIMIT 1 

이 테이블 구조는

#1064 - 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 'show=1) LIMIT 1' at line 1 

저에게이 오류가 발생합니다 : : 무슨 잘못

CREATE TABLE IF NOT EXISTS `discount_items` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL, 
    `image` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL, 
    `discount` float NOT NULL, 
    `price1` float NOT NULL, 
    `price2` float NOT NULL, 
    `bought` int(11) NOT NULL, 
    `target` int(11) NOT NULL, 
    `desc` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL, 
    `link` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL, 
    `active` tinyint(1) NOT NULL, 
    `start` int(11) NOT NULL, 
    `end` int(11) NOT NULL, 
    `position` int(11) NOT NULL DEFAULT '1', 
    `show` int(11) NOT NULL DEFAULT '1', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

내가하지 않는

내가이 SQL 명령을 실행합니다. 분명히 '쇼'필드는 문제가 발생하지만 난 이미 모든 노력을하기 때문에 .. (쇼 필드에 문제가있을 수 있어야합니다

SELECT `discount_items`.* FROM `discount_items` WHERE (show=1) AND (active=1) AND (end<=1344007212) AND (position=1) LIMIT 1 

#1064 - 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 'show=1) AND (active=1) AND (end&lt;=1344007212) AND (position=1) LIMIT 1' at line 1 

을 던졌습니다 그래서 문제가 쇼 필드로 이동 .

이 일반적인 문제가 있지만, 내가 봤 아무것도 찾을 수 없습니다.이 오류는 너무 전역 나에게 아무것도 설명하지 않는 경우 미안 해요.

감사를 어떤 그가 LP와 팁!

답변

3

show은 예약어입니다. 하나를 변경하거나 MySQL은 예약어입니다

SELECT `discount_items`.* FROM `discount_items` WHERE (position=1) AND (active=1) AND (end<=1344007212) AND (`show`=1) LIMIT 1 
+0

감사합니다. 나는 그것과 같은 것이라고 생각했다. -_- :) – user1574556

+0

일찍 일어나는 새가 벌레를 잡는다. 나는이 질문에 대한 답변을 타이핑하고 있었고 그 동안에는 2 개의 답변이 게시되었습니다 ... 둘 다 Upvoted ... :) – verisimilitude

+0

내 생각 엔 ** 최종 **는 또한 예약어입니다 – hmmftg

4

show 틱에 넣습니다. 당신은 필드 이름을 참조하는 데 사용하려는 경우, 당신은이 같은 주변 역 따옴표를 사용해야합니다

SELECT `discount_items`.* 
FROM `discount_items` 
WHERE 
    (position=1) 
    AND (active=1) 
    AND (end<=1344007212) 
    AND (`show`=1) /* backticks added here */ 
LIMIT 1 
1

show는 MySQL은 예약어입니다. 작동하도록 백틱으로 묶으십시오.

관련 문제