2013-02-18 2 views
0

나는 내 자신의 PDO 문장 (하드 코딩 됨)과 함께 CodeIgniter를 사용하고 있습니다. 다른 테이블에 대한 외래 키 인 ID를 클릭하려고하면 phpmyadmin에서 오류가 발생합니다.아주 이상한 데이터베이스 삽입/phpmyadmin 선택

mysql> select * from session WHERE anum = 'A00163047'; 
+------------+-----------+------+---------+---------------------+-----------------+--------+ 
| session_id | anum  | why | aidyear | signintime   | studentcomments | status | 
+------------+-----------+------+---------+---------------------+-----------------+--------+ 
|  184 | A00163047 | 4 | 14-15 | 2013-02-17 23:21:47 |     |  0 | 
+------------+-----------+------+---------+---------------------+-----------------+--------+ 
1 row in set (0.00 sec) 
: 나는이 얻을 라인을 명령 갈 때 error

: phpMyAdmin을에서 외래 키를 사용하는 경우 외래 키가 테이블

이 하이퍼 링크로 표시됩니다 것은 예입니다

또한 이드의 ID는 다르지만 오류가 지속되는 정도는 낮습니다.

마치 anum = 'whatever id'를 추가하면 쿼리를 반환하는 것처럼 보입니다. 테이블에 넣을 데이터를 검색 할 때 언제 걱정해야합니까?

나는 이것을 XSS on 및 off (전역 적으로) 복제하려고 시도했지만 form_validation의 가능한 모든 조합을 시도했지만 여전히 동일한 오류가 발생합니다. 이게 왜 그렇게? 이것은 내 데이터가 손상된 곳으로 걱정하고있다.

편집 1 :

명 실제 값이 경우가 아니라 _27A0000000_27

이라고 생각 응답을 기반으로. phpmyadmin 하이퍼 링크 _27을 클릭하면 _27이 추가되어 오류가 발생합니다. 내가 선택하는 방법을 알고

예 : select * from whatever WHERE anum = 'Whatever';

편집 2 :

Test

그래서 자동으로 생성처럼 당신은 phpMyAdmin에있는 하이퍼 링크는 select 문이있을 것이다 명중시 :

Testing11

+0

해당 진술을 생성하는 코드를 보여줄 수 있습니까? – ESG

+0

원래 쿼리에서 세션 테이블에서 선택하는 중 오류가 발생했습니다. 사용되는 테이블이 다릅니다 ... 관련 쿼리에서 오류가 발생했습니다 ... –

+0

phpmyadmin의 명령문은 무엇입니까? 또는 내 실제 PDO? – RaGe10940

답변

0

값을 인용 부호로 묶어야합니다 se varchar 필드의 값은 항상 따옴표로 묶어야합니다.

그래서 쿼리는

SELECT * FROM `citest`.`student` 

WHERE `anum` = '_27A00000000_27' 

Limit 0,30 

감사 할 것이다.

+0

질문을 선택하는 방법을 알고 있습니다. OP에서 준 예제를보십시오. 문제는 값이 _27A0000000_27이 아니기 때문에 A00000000입니다. 어떤 이유로 _27 (무엇이든) _27이 내 Anum에 추가되고 있습니다 = – RaGe10940

+0

원래 게시물을보세요 – RaGe10940

2

인코딩 문제가되어야합니다. 0x27은 작은 따옴표 문자 (')의 ASCII 16 진수 값입니다.

또는 작은 따옴표가 바뀌는 방식으로 PDO가 코딩되어 있습니까?

+0

정확히 내가 생각한 +1입니다. –

관련 문제