내 데이터베이스에 삽입하려는 모든 문자열을 이스케이프하고 싶습니다.MySQL의 실제 탈출 - 자신의 탈출 - o를 ö?
function escape($value) {
$return = '';
for($i = 0; $i < strlen($value); ++$i) {
$char = $value[$i];
$ord = ord($char);
if($char !== "'" && $char !== "\"" && $char !== '\\' && $ord >= 32 && $ord <= 126)
$return .= $char;
else
$return .= '\\x' . dechex($ord);
}
return $return;
}
: 내가 확인하는 이상 10.000 문자열을 가지고 있기 때문에하지만 내 문제는 데이터베이스 쿼리
그래서 내가 stackoverflow.com에 여기이 탈출 기능을 사용하여 ... 너무 많은 것입니다
효과가 있습니다. 하지만 내 문제는 내가 그와 같은 어떤 ö
, ä
또는 문자가없는 것을입니다 ... 나는이 같은 문자열이이 함수를 호출
하기 전에 : Königsedition
를 그리고이 함수를 호출 한 후, 나는 K\xc3\x83\xc2\xb6nigsedition
을 얻어야한다. 그러나 문제는 몇 가지 이유 때문에 내 데이터베이스에 Kxc3xb6nigsedition
이 있습니다 ...
어떻게 이것을 Königsedition
으로 바꿀 수 있습니까? 더 10.000 SQL 쿼리보다 문자열을 탈출하고 UTF 8
서식을 유지하기 위해 다음 내가해야하기 때문에
또는의 SQL 실제 이스케이프 기능을 사용하지 않고 문자열을 탈출 할 수있는 다른 방법은 무엇입니까? (나는이 방법을 선호 할 것이다!)
안녕하십니까!
매개 변수화 된 쿼리는 어떻게됩니까? – frz3993
"어떤 이유로 든"데이터베이스에서 문자열을 얻습니다 ... "escape"기능을 호출하지 않습니다. INSERT 또는 UPDATE 문을 실행했기 때문에 데이터베이스에 문자열이 생깁니다. 그 "이스케이프"함수에서 문자열 반환을 삽입하는 경우, 그것은 데이터베이스에서 문자열을 얻는 "이유"가됩니다. 나는 당신이 데이터베이스에 삽입하기 위해 삽입 한 문자열과 다른 문자열을 기대하는 이유를 이해하지 못합니다. 왜 "이 탈출 함수를 사용합니까"? 나는 그 목적을 이해하지 못한다. – spencer7593
바인드 자리 표시 자와 함께 준비된 문을 사용하고 삽입 할 문자열의 값을 제공하십시오. 값으로 전달 된 문자열의 인코딩이 MySQL 클라이언트 및 열에 지정된 문자 집합과 일치하는지 확인하십시오. https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html – spencer7593