Хорошо, я сбит с толку. Я пытаюсь выполнить запрос к базе данных (локально) и постоянно получаю сообщение об ошибке сброса соединения. Я использовал описанный ниже метод в универсальном классе DAO для создания строки запроса и передачи в Zend_Db API.
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);
}
}
До сих пор это работало нормально — ошибки возникали с тех пор, как мы создали новые таблицы для записи пользовательского ввода. Строка вставки выглядит так:
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')
Вот параметры, которые он получает перед сборкой запроса (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)
Следующим портом захода была проверка ограничений в таблице, поскольку она, кажется, вставляется, если длина «описания» составляет около отметки 300 (оно варьируется от 310 до 330). Ограничение поля установлено на VARCHAR (1500), и проверка этого поля не позволит ничего больше 1200 с HTML, 800 без.
Настоящим кикером является то, что если я возьму эту строку sql и выполню ее через командную строку, она будет работать нормально, поэтому я не могу понять, что не так.
Я попытался расширить параметры сервера, т.е. Неожиданный сброс соединения: A Проблема с PHP или Apache?
Итак, короче говоря, я в тупике. Любые идеи?