6

我的迁移中有一些简单的更新,其中包含可能包含特殊字符的字符串。例如:

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

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

是否有任何本地方式phinx来逃避字符串,或者我需要依靠类似的东西PDO::quote()

4

1 回答 1

11

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

  1. 抓住 PDO 连接
  2. 使用quote()或 直接使用连接手动构造查询

这是我的代码示例quote()

public function change()
{
    $conn = $this->getAdapter()->getConnection();
    $quotedString = $conn->quote('org\foo\Bar');
    $this->execute("UPDATE `setting` SET `classname` = $quotedString WHERE `id` = 1 ");
 }
于 2016-04-18T15:42:31.847 回答