2012-01-23 5 views
0

%를 포함하는 char를 저장하려고하는데 '/ 또는'와 같은 다른 문자가 정상적으로 작동하는 것처럼 보이지만 문제를 해결할 수는 없습니다. mysql_real_escape_string 또는 다른 것들을 사용하면 작동하지 않습니다.MySQL에서 이스케이프 % 문자

현재 %를 '백분율'로 바꿀 것입니다 (백 슬래시 + %에서 작동하지 않았습니다). 데이터베이스에 저장하고 에코하기 전에 다시 바꾼다. 그러나 실제로 알맞은 것은 아니다. 더 좋은 방법이 있다면 알려주시기 바랍니다.

+1

왜 '%'문자를 이스케이프하고 싶습니까? 이 기호를 데이터베이스에 저장할 때 저장되는 것은 무엇입니까? –

+0

문제는 그것을 전혀 저장하지 않는다는 것입니다. 그래서 그것이 내가 그것을 벗어나야 만한다고 가정 한 것입니다. 또한, http://dev.mysql.com/doc/refman/5.0/en/string-literals.html – Andrew

+1

보통 'LIKE' 절 안에서 사용하고 리터럴'% '과 (을) 일치시키려는 경우 이스케이프 처리합니다. 'sprintf' 함수를 사용하여 삽입/업데이트 쿼리를 작성할 수 있습니까? –

답변

1

변수를 넣지 마십시오. 값과 일치하는 자리 표시 자 및 값 바인딩 사용

1

PHP에서 삽입하기 전에 addslashes을 퍼센트 기호에 사용해야하는 경우. 삽입/업데이트를하는 동안

 

'10\% off' //you need to escape % character 
 
1

MySQL은 % 문자를 변경하지 않습니다 MySQL을 자사에 대한 . 당신이 그것에 문제가 있다면, 그것은 변환을하고있는 당신의 설정의 다른 레이어 여야합니다.

create table test (a varchar(10)); 
insert into test values ('abc%def'); 
select * from test; 

+---------+ 
| a  | 
+---------+ 
| abc%def | 
+---------+ 
1 row in set (0.00 sec) 
+0

그렇다면 잘못된 것이 있어야합니다. 쿼리 또는 뭔가 다른, 문제는 내가 정말 mysql에 대해 많이 모른다는 것입니다,이 코드는 pastebin.com/QGVQNHxS입니다. – Andrew

0

분명히, %은 나를 위해 그것을했다 str_replace는 더블, 그래서 매우 간단하여 탈출 할 수 있습니다.