I have following code:
foreach($RSS_DOC->channel->item as $RSSitem) { $item_id = md5(str_replace(array('\'', '"'), '', $RSSitem->title)); $fetch_date = date("Y-m-j G:i:s"); //NOTE: we don't use a DB SQL function so its database independant $item_title = str_replace(array('\'', '"', '(', ')', ' - ', '.'), '', $RSSitem->title); $item_date = date("Y-m-j G:i:s", strtotime($RSSitem->pubDate)); $item_url = $RSSitem->link; $words = explode(' ', $item_title); echo "Processing item '" , $item_id , "' on " , $fetch_date , "<br/>"; echo $item_title, " - "; echo $item_date, "<br/>"; echo $item_url, "<br/>"; // Does record already exist? Only insert if new item... $item_exists_sql = "SELECT item_id FROM rssingest where item_id = '" . $item_id . "'"; $item_exists = mysql_query($item_exists_sql, $db); if(mysql_num_rows($item_exists) < 1) { echo "<font color=green>Inserting new item..</font><br/>"; $item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_url, fetch_date) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_url . "', '" . $fetch_date . "')"; $insert_item = mysql_query($item_insert_sql, $db); foreach ($words as $value) { $word_exists_sql = "SELECT id FROM words WHERE word = '" . $value . "'"; $word_exists = mysql_query($word_exists_sql, $db); if (mysql_num_rows($word_exists) < 1) { $word_insert_sql = "INSERT INTO words(word, count) VALUES ('" . $value . "', '1')"; $insert_word = mysql_query($word_insert_sql, $db); echo "<font color=green>Inserting word ".$value."..</font><br/>"; } else { $word_update_sql = "UPDATE words SET count = count+1 WHERE word = '" . $value . "'"; $update_word = mysql_query($word_update_sql, $db); echo "<font color=green>Updating count for word ".$value."..</font><br/>"; } } } else { echo "<font color=blue>Not inserting existing item..</font><br/>"; } echo "<br/>"; } The first foreach works as expected, the second one only inserts the first word of the first rss item in the DB, even though the echo's for the rest of the words are displayed correctly.
What am I missing?
mysql_*functions in new code. They are no longer maintained and the deprecation process has begun on it. See the red box? Learn about prepared statements instead, and use PDO or MySQLi - this article will help you decide which. If you choose PDO, here is a good tutorial.