2012-05-29 7 views
-1

저는 공통된 문제가 있지만 최선의 해결책을 찾고 있습니다.라틴 문자로 php 변수를 mysql db에 삽입하십시오.

데이터를 이전하기위한 스크립트를 작성한 기존 데이터베이스가 있습니다. 내 스크립트에서

나는 다음과 같은 한 :

$select = $dbh->query("SELECT CollectionID, CollectionCode, Name FROM $db_local.collection"); 
    while ($collection_row = $select1->fetch (PDO::FETCH_ASSOC)) { 
    $collection_id = $collection_row['CollectionID']; 
    $collection_code = !empty($collection_row['CollectionCode']) ? "'{$collection_row['CollectionCode']}'" : "NULL"; 
    $collection_name = !empty($collection_row['Name']) ? "'{$collection_row['Name']}'" : "NULL"; 

    $dbh->exec("INSERT INTO $db_remote.cdrs_collectiononline (
     collection_id, 
     collection_code, 
     collection_name 
     ) VALUES (
     $collection_id, 
     $collection_code, 
     $collection_name 
     )"); 
} 

나는이 행에서 실행할 때까지이 모든 괜찮 :

| CollectionID | CollectionCode | Name        | 
+--------------+----------------+-------------------------------------+ 
|   1032 | MHNG   | Muséum d'Histoire Naturelle, Genève | 

내가 직접 MySQL은 (따옴표 주)에서이 작업을 수행하는 경우 :

INSERT INTO cdrs_collectiononline (collection_id, collection_code, collection_name) VALUES ('1032', 'MHNG', "Muséum d'Histoire Naturelle, Genève") 

작동합니다. mysql pdo를 사용하여 이러한 라틴 문자의 가능성을 처리하는 가장 좋은 방법은 무엇입니까?

도움을 주시면 감사하겠습니다.

답변

1

시도 :

$collection_name = addslashes(mysql_escape_string($collection_name)); 

나 :

$dbh->exec("INSERT INTO $db_remote.cdrs_collectiononline (
     collection_id, 
     collection_code, 
     collection_name 
     ) VALUES (
     '".$collection_id."', 
     '".$collection_code."', 
     '".$collection_name."' 
     )"); 
+0

'$ collection_name = mysql_escape_string ($ collection_name);'으로 충분했지만 감사합니다. 다시 한번 감사드립니다. –

관련 문제