很抱歉,如果这个问题得到了一定程度的回答,但我看到的答案似乎都在改变......
我真的不是100%确定如何处理来自数据库的数据。
例如:一个UTF8 mysql数据库和一个用户输入的表单。
在处理帖子时 - 我应该htmlspecialchars('data',ENT_QUOTES)
将数据保存到数据库之前,还是只保存原始数据......数据很可能包含特殊字符的umlouts等。因此,如果没有进行清理,我会假设<
和>
,并且所有类型的报价都将完全按原样存储。
在保存之前,我还需要addslashes
或mysql_real_escape_string
。
OR应该在输出上完成所有这些操作,只使用过滤输入,我使用zend所以我在大多数元素中添加了过滤器。
不确定相关的magic_quotes但是已关闭。
编辑2 :
我相信我的查询使用预准备语句->where('fqha.form_question_has_answer_form_id = ?', $result[$input->formpage]['form_id'])
这是否意味着我可以忽略对数据的任何进一步操作,只保存post vars包含的内容。只担心清理输出到页面?
修改:
我正在使用学说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;
}