Zend 2 - DB - 不引用它而逃避值

时间:2014-02-12 19:51:05

标签: php zend-framework2 zend-db

我正在寻找一种简洁的方法来逃避SQL查询的价值而不用引用它。

假设我有一个值It's cool。现在我想简单地获取转义字符串It\'s cool,就像为mysqli_real_escape_string()驱动程序使用mysqli函数时一样。

问题是所有Zend\Db\Adapter\Platform接口的引用方法都会为该值添加单引号,这意味着我得到'It\s cool'

我发现这样做的最简单方法是在使用quoteValue()方法后修剪引号。

$raw = "It's cool";
$quoted  = $this->db->platform->quoteValue($raw);
$final = trim($quoted, "'");

但它当然是一个肮脏的解决方案,我不希望它在我需要仅转义值的每个地方都是这样。

在Zend2中有没有干净的方法来做这个简单的事情?

1 个答案:

答案 0 :(得分:1)

也许你可以尝试这样的事情:

$sql = "UPDATE posts set comment = :value where id = :id";
$data = ['value' => "It's cool", 'id' => 123];
$stmt= $this->tableGateway->getAdapter()->createStatement($sql);
$stmt->prepare($sql);
$stmt->execute($data);