Hallo Community,
ich habe eine eigene Komponente geschrieben, welche externe RSS-Feeds und in der Joomla Datenbank speichert. Im Backend verwaltet ich die Quellen und die einzelnen Feeds.
Über einen Cronjob, wird eine versteckte Frontend Seite in Joomla aufgerufen, die das Speichern der Feeds in die Datenbank übernimmt.
Um die Daten zu Speichern nutze ich folgenden Code:
Code
$db = JFactory::getDBO();
foreach ($this->feedProperties as $key => $value) {
$query = $db->getQuery(true);
$query->select('COUNT(*)');
$query->from($db->quoteName('#__heka_rss_feeds'));
$query->where($db->quoteName('id_feedsource')." = ".$db->quote($db->escape($value['source'])));
$query->where($db->quoteName('title')." = ".$db->quote($db->escape($value['title'])));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$count = $db->loadResult();
if ($count < 1){
// Create a new query object.
$query = $db->getQuery(true);
// Insert columns.
$columns = array('id',
'id_feedsource',
'title',
'link',
'pubDate',
'timePubDate',
'guid',
'description',
'creator',
'content' ,
'read',
'smart',
'demografie',
'urbanisierung',
'arbeitswelten',
'konnektivitaet',
'nano',
'femaleshift',
'energie',
'bildung',
'individualisierung',
'public',
'cache');
// Insert values.
$values = array('NULL',
$db->quote($db->escape($value['source'])),
$db->quote($db->escape($value['title'])),
$db->quote($db->escape($value['link'])),
$db->quote($db->escape($value['pubDate'])),
$db->quote($value['timePubDate']),
$db->quote($db->escape($value['guid'])),
$db->quote($db->escape($value['description'])),
$db->quote($db->escape($value['creator'])),
$db->quote($db->escape($value['content'])),
0,0,0,0,0,0,0,0,0,0,0,0,0);
// Prepare the insert query.
$query
->insert($db->quoteName('#__heka_rss_feeds'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
// Set the query using our newly populated query object and execute it.
$db->setQuery($query);
$db->execute();
}
}
Alles anzeigen
Nun habe ich ein Problem mit der Funktion $db->escape(). Vor den Sonderzeichen wird immer ein Backslash hinzugefügt und so in der Datenbank gespeichert. Und im Backend auch angezeigt.
Was mache ich falsch?
teccrow