2011-08-16 9 views
1

이 SQL 코드와 함께 준비된 문을 사용하고 있습니다 :이 MySQL 준비 문은 무엇이 잘못 되었습니까? "where 절에서 알 수없는 열"

SELECT `name` FROM `securities` WHERE `symbol`=? AND `type`=`C` 

하지만 난 그것을 실행할 때이 오류가 계속 :

Column not found: 1054 Unknown column 'C' in 'where clause' 

테이블은 다음과 같이 설정됩니다 :

+--------+-----------------------+------+------+ 
| symbol | name     | type | used | 
+--------+-----------------------+------+------+ 
| AED | UAE Dirham   | C | 0 | 
| ALL | Albanian Lek   | C | 0 | 
| ANG | Neth Antilles Guilder | C | 0 | 
| ARS | Argentine Peso  | C | 0 | 
| AUD | Australian Dollar  | C | 0 | 
| AWG | Aruba Florin   | C | 0 | 
| BBD | Barbados Dollar  | C | 0 | 
| BDT | Bangladesh Taka  | C | 0 | 
| BGN | Bulgarian Lev   | C | 0 | 
| BHD | Bahraini Dinar  | C | 0 | 
+--------+-----------------------+------+------+ 

쿼리 이름을 그냥 노력하고있어. 이 오류를 수정하려면 어떻게해야합니까? 값을 바인딩하는 코드는 게시하기에는 너무 길지만 기본적으로 array($symbol)을 사용하여 준비된 명령문을 실행합니다. 누락 된 SQL 오류가 있습니까?

+0

편집 내용을 확인했습니다. 'C'(또는 'C')를 사용할 때 어떤 오류 메시지가 나타 납니까? –

+0

내 의견보기; 작은 따옴표를 사용해 보았을 때 같은 PHP 코드에서 다른 곳에서 제대로 이스케이프 처리하지 못했습니다. 그것은 지금, 고쳤다. –

답변

3

값이 C이고 백틱으로 묶여 있습니다. 이 작업은 값이 아닌 열 및 테이블 이름에 대해서만 수행해야합니다.

따옴표로 변경을하고 작업을해야이 : 역 따옴표에서

SELECT `name` FROM `securities` WHERE `symbol`=? AND `type`='C' 
+0

작은 따옴표를 올바르게 이스케이프 처리하지 못했기 때문에 원래 작은 따옴표로 시도했지만 작동하지 않았습니다. 도와 주셔서 감사합니다! –

+0

도와 드리겠습니다! 내가 그 일을 처음 겪은 것도 아니 겠지. :) –

2

일이 MySQL의에서 열/테이블 이름 것으로 간주됩니다. MySQL에게 묻는 것은 type 열의 값이 C 열의 값과 동일한 모든 행을 반환하는 것이고 실제로 원하는 것은 단일 (또는 이중) 따옴표입니다. 즉.

SELECT `name` FROM `securities` WHERE `symbol`=? AND `type`='C' 
관련 문제