0

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?

1

1 Answer 1

1
$word_insert_sql = "INSERT INTO words(word, count) VALUES ('" . $value . "', count+1)"; 

Where exactly is that count + 1 supposed to be coming from. Surely that should just be 1.

In any case, where you're attempting DB operations, it's usually a good idea to check that they've worked before continuing.

Sign up to request clarification or add additional context in comments.

3 Comments

Leftover from testing the update part of the code... Will update code
The thing is... one exploded word is inserted into the DB, but that's is.
@andy, see the second part of my answer. You should check that the mysql_query is returning true and also call mysql_affected_rows to see how many rows were hit.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.