对不起,如果这个问题已经得到了一些回答,但我所看到的任何地方的答案似乎都在改变..
我真的不是 100% 确定如何处理进出数据库的数据。
例如:一个 UTF8 mysql 数据库和一个接受用户输入的表单。
在处理帖子时 - 我应该htmlspecialchars('data',ENT_QUOTES)
在将数据保存到数据库之前将其保存到数据库中还是只保存原始数据.. 数据很可能包含特殊字符的 umlouts 等。因此,如果没有进行任何清理,我假设<
并且>
所有类型的引号都将完全按原样存储。
我也需要addslashes
或mysql_real_escape_string
在保存之前。
或者是否应该在输出上完成所有这些工作并且只对输入使用过滤,我使用 zend,所以我在大多数元素中添加了过滤器。
不确定其相关的magic_quotes,但已关闭。
编辑 2:
我相信我的查询使用准备好的语句->where('fqha.form_question_has_answer_form_id = ?', $result[$input->formpage]['form_id'])
那么这是否意味着我可以忽略对数据的任何进一步操作,只保存帖子变量包含的内容。只担心输出到页面的消毒?
编辑:
我正在使用学说 1.2,据我所知,这是 pdo .. 但是关于这个和上述问题,任何建议都将不胜感激
protected function _initDoctrine()
{
require_once 'Doctrine/Doctrine.php';
require_once 'Doctrine/Overloadable.php';
require_once 'Doctrine/Connection/Profiler.php';
$this->getApplication()
->getAutoloader()
->pushAutoloader(array('Doctrine', 'autoload'), 'Doctrine');
$manager = Doctrine_Manager::getInstance();
$manager->setAttribute(
Doctrine::ATTR_MODEL_LOADING,
Doctrine::MODEL_LOADING_CONSERVATIVE
);
$cacheDriver = new Doctrine_Cache_Apc();
$config = $this->getOption('doctrine');
$conn = Doctrine_Manager::connection('mysql://user:pass@localhost/db_name', 'doctrine');
$conn->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE, $cacheDriver);
$conn->setCharset('utf8');
$conn->exec('SET NAMES utf8');
$profiler = new Imind_Profiler_Doctrine_Firebug();
$conn->setListener($profiler);
return $conn;
}