Jump to content

Question

Posted

Having trouble inserting some data into a database, basically i'm scraping data from an RSS feed and looping through each entry and inserting it into a database but when it gets to the 'content' field it fails, but there is no errors, it just wont insert.. if i remove the content field then it inserts just fine so i think thats the culprit.

[php]

$RSS_DOC = simpleXML_load_file($feed_url);


foreach($RSS_DOC->channel->item as $RSSitem) {

$content = $RSSitem->description;

$item_insert_sql = "INSERT INTO default_posts(content) VALUES ('$content')";

$insert_item = mysql_query($item_insert_sql, $db);

}
[/php]

$RSSitem->description would be:

[code]
<description><![CDATA[Madonna celebrated Yom Kippur in New York City on Tuesday (25.09.12). <BR>
The 'Celebration' singer is a devotee of Jewish offshoot Kabbalah and joined with other followers of the religion to celebrate the Day of Atonement, the holiest day in the calendar for Jewish people.<BR>
Madonna, 54, arrived at the city's Park Avenue Armory wearing a bright purple sweat suit with the number 86 on them and a hat with the word 'Vogue' written on it. <BR>
A source told the New York Post newspaper: &quot;Madonna was the last to arrive, and it seemed like they were holding up the ceremony to wait for her. <BR>
&quot;She came through a back entrance with her daughter, Lourdes, and was seated in the front row. Once she was seated, it could begin. All the men were in white but Madonna had a loud track suit on. Also there was her younger boyfriend [Brahim Zaibat], who arrived wearing cream.&quot; <BR>
While her entrance may have caused a stir, the 'Hung Up' singer certainly focused during the service, and appeared oblivious to those around her, including fashion designer Donna Karan, who was seated nearby. <BR>
The witness added: &quot;[Madonna] definitely set herself apart from everyone else. She is like the queen of Kabbalah.&quot;<BR>
A statement on the Kabbalah website explains the religious day's significance, saying &quot;[During] Yom Kippur, we sit on the throne with Binah and remove the fog in our lives for the entire year to come.&quot; <BR>
Earlier this week, Madonna was forced to clarify comments she made at a concert on Monday (24.09.12) in Washington, where she referred to the US president as a &quot;black Muslim,&quot; despite him being openly Christian.<BR>
Madonna said she was &quot;being ironic,&quot; adding: &quot;Yes, I know Obama is not a Muslim, though I know that plenty of people in this country think he is.&quot;]]></description>
[/code]

if i $echo description; it prints correct so i know it's pulling the data but why wont it go into to the DB? the $content field is set to LONGTEXT.

Does it have anything to do with <![CDATA[ ?

Any suggestions?

sorry about double post neowin borked

Share this post


Link to post
Share on other sites

1 answer to this question

  • 0

Posted

You have forgotten the [url="http://imgs.xkcd.com/comics/exploits_of_a_mom.png"]rule zero[/url] - to escape text data before passing to MySQL. Your query becomes malformed like this:
[font=courier new,courier,monospace]INSERT INTO default_posts(content) VALUES ('<description><![CDATA[Madonna celebrated Yom Kippur in New York City on Tuesday (25.09.12). <BR> The '[/font][font=courier new,courier,monospace]);[/font]

SQL thinks your text data ends at the first single quote it sees. However, it then finds more text that totally isn't valid SQL statement. And so [font=courier new,courier,monospace]INSERT[/font] fails. Of course, if you don't check for errors, it won't show any.

Solution (partly):

A) [font=courier new,courier,monospace]$content = mysql_real_escape_string([/font][font=courier new,courier,monospace]$RSSitem->[/font][font=courier new,courier,monospace]description);[/font]
B) Use [i]mysqli[/i] and its parameter binding/binary transfer. Escape text data anyway (with [font=courier new,courier,monospace]mysqli_real_escape_string()[/font], accordingly) - to avoid problems outputting it later.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.