zend framework防止sql注入的方法

Zend_Db_Adapter (通过pdo)提供了两种方法帮助你手动的为条件值加上引号。

第一种是quote() 方法. 该方法会根据数据库adapter为标量加上 合适的引号;假如你试图对一个数组做quote操作, 它将为数组中 每个元素加上引号,并用”,”分隔返回. (对于参数很多的函数来说,这点是很有帮助的).

<?php

// 创建一个$db对象,假设数据库adapter为mysql.

// 为标量加引号
$value = $db->quote('St John"s Wort');
// $value 现在变成了 '"St John\"s Wort"' (注意两边的引号)

// 为数组加引号
$value = $db->quote(array('a', 'b', 'c');
// $value 现在变成了 '"a", "b", "c"' (","分隔的字符串)

?>

第二种是 quoteInto() 方法. 你提供一个包含问号占 位符的基础字符串 , 然后在该位置加入带引号的标量或者数组. 该 方法对于随需构建查询sql语句和条件语句是很有帮助的. 使用 quoteInto处理过的标量和数组返回结果与quote() 方法相同.

<?php

// 创建一个$db对象,假设数据库adapter为mysql.

// 在where语句中为标量加上引号
$where = $db->quoteInto('id = ?', 1);
// $where 现在为 'id = "1"' (注意两边的引号)

// 在where语句中为数组加上引号
$where = $db->quoteInto('id IN(?)', array(1, 2, 3));
// $where 现在为 'id IN("1", "2", "3")' (一个逗号分隔的字符串)

?>

Leave a Reply

Your email address will not be published. Required fields are marked *