Jump to content



Photo

Field wont insert into the database

php mysql

  • Please log in to reply
1 reply to this topic

#1 Uplift

Uplift

    Just below average Joe

  • Tech Issues Solved: 1
  • Joined: 07-May 04
  • Location: England

Posted 27 September 2012 - 19:39

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.



$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);

}


$RSSitem->description would be:

<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>

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


#2 +Phouchg

Phouchg

    Random Oracle

  • Tech Issues Solved: 6
  • Joined: 28-March 11
  • Location: Krikkit
  • OS: VTOS 6.1.7601 x64

Posted 27 September 2012 - 21:45

You have forgotten the rule zero - to escape text data before passing to MySQL. Your query becomes malformed like this:
INSERT INTO default_posts(content) VALUES ('<description><![CDATA[Madonna celebrated Yom Kippur in New York City on Tuesday (25.09.12). <BR> The ');

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 INSERT fails. Of course, if you don't check for errors, it won't show any.

Solution (partly):

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



Click here to login or here to register to remove this ad, it's free!