【问题标题】:Insert php variable with latin characters into mysql db将带有拉丁字符的php变量插入mysql db
【发布时间】:2012-05-29 22:15:42
【问题描述】:

我很确定,这是一个常见问题,但我正在寻找最佳实践解决方案。

我有一个旧数据库,为此我编写了一个脚本来迁移数据。

在我的脚本中,我有以下内容:

$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 处理这些拉丁字符的可能性的最佳方法是什么?

非常感谢任何帮助。

【问题讨论】:

    标签: php mysql pdo latin


    【解决方案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."'
            )");
    

    【讨论】:

    • 谢谢,尽管$collection_name = mysql_escape_string($collection_name); 已经足够了。再次感谢。
    【解决方案2】:

    有点晚了,但它可以帮助别人!

    最好使用 pdo prepare 和 bindParam : http://fr2.php.net/manual/fr/pdostatement.bindparam.php

    它会根据你选择的类型转义字符。

    【讨论】:

      猜你喜欢
      • 2015-06-26
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      相关资源
      最近更新 更多