OK, eu estou desconcertado. (Eu já fiz esta pergunta sobre o Stack - mas eu preciso consertá-lo, então estou perguntando aqui também - qualquer ajuda é MUITO apreciada)
Estou tentando executar uma consulta em um banco de dados (localmente) e continuo recebendo um erro de redefinição de conexão. Eu tenho usado o método abaixo em uma classe DAO genérica para criar uma seqüência de consulta e passar para a API Zend_Db.
public function insert($params) {
$loop = false;
$keys = $values = '';
foreach($params as $k => $v){
if($loop == true){
$keys .= ',';
$values .= ',';
}
$keys .= $this->db->quoteIdentifier($k);
$values .= $this->db->quote($v);
$loop = true;
}
$sql = "INSERT INTO " . $this->table_name . " ($keys) VALUES ($values)";
//formatResult returns an array of info regarding the status and any result sets of the query
//I've commented that method call out anyway, so I don't think it's that
try {
$this->db->query($sql);
return $this->formatResult(array(
true,
'New record inserted into: '.$this->table_name
));
}catch(PDOException $e) {
return $this->formatResult($e);
}
}
Até agora, isso funcionou bem - os erros vêm ocorrendo desde que geramos novas tabelas para registrar a entrada do usuário. A string de inserção é assim:
INSERT INTO tablename('id','title','summary','description','keywords','type_id','categories') VALUES ('5539','Sample Title','Sample content','
\'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In et pellentesque mauris. Curabitur hendrerit, leo id ultrices pellentesque, est purus mattis ligula, vitae imperdiet neque ligula bibendum sapien. Curabitur aliquet nisi et odio pharetra tincidunt. Phasellus sed iaculis nisl. Fusce commodo mauris et purus vehicula dictum. Nulla feugiat molestie accumsan. Donec fermentum libero in risus tempus elementum aliquam et magna. Fusce vitae sem metus. Aenean commodo pharetra risus, nec pellentesque augue ullamcorper nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam vel elit libero. Vestibulum in turpis nunc.\'','this,is,a,sample,array',1,'category title')
Aqui estão os parâmetros que está obtendo antes de montar a consulta (var_dump):
array
'id' => string '1' (length=4)
'title' => string 'Sample Title' (length=12)
'summary' => string 'Sample content' (length=14)
'description' => string '<p>'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In et pellentesque mauris. Curabitur hendrerit, leo id ultrices pellentesque, est purus mattis ligula, vitae imperdiet neque ligula bibendum sapien. Curabitur aliquet nisi et odio pharetra tincidunt. Phasellus sed iaculis nisl. Fusce commodo mauris et purus vehicula dictum. Nulla feugiat molestie accumsan. Donec fermentum libero in risus tempus elementum aliquam et magna. Fusce vitae sem metus. Aenean commodo pharetra risus, nec pellentesque augue'... (length=677)
'keywords' => string 'this,is,a,sample,array' (length=22)
'type_id' => int 1
'categories' => string 'category title' (length=43)
O próximo porto de escala foi verificar os limites na tabela, já que parece inserir se o comprimento de "descrição" está em torno da marca 300 (varia entre 310 - 330). O limite de campo é definido como VARCHAR (1500) e a validação neste campo não permitirá nada além de 1200 com HTML, 800 sem.
O kicker real é que, se eu pegar essa string sql e executá-la pela linha de comando, ela funcionará bem - então, não posso, na minha vida, descobrir o que há de errado.
Eu tentei estender os parâmetros do servidor, ou seja,
link
Então, em poucas palavras, estou perplexo. Alguma idéia?