在Phinx中编写数据迁移时,如何逃避字符串?

时间:2016-04-18 15:07:31

标签: php phinx

我在迁移过程中使用可能包含特殊字符的字符串进行了一些简单的更新。例如:

$this->execute("UPDATE `setting` SET `classname` = 'org\foo\Bar' WHERE `id` = 1 ");

这个问题,例如,org\foo\Bar插入MySQL时会将\视为转义字符。对于每个数据库phinx支持,我确定需要在字符串中处理特殊字符,直接使用PDO时,您可以通过使用预准备语句和绑定参数来解决这些问题。

phinx中是否有任何原生方式来逃避字符串,或者我是否需要依赖PDO::quote()之类的内容?

1 个答案:

答案 0 :(得分:7)

正如夏洛特的OP评论中提到的那样,它看起来并不像这个特征。解决方法如下:

  1. 抓住PDO连接
  2. 使用quote()或直接使用连接构建查询
  3. 以下是使用quote()

    的代码示例
    public function change()
    {
        $conn = $this->getAdapter()->getConnection();
        $quotedString = $conn->quote('org\foo\Bar');
        $this->execute("UPDATE `setting` SET `classname` = $quotedString WHERE `id` = 1 ");
     }