MYSQL PHP: How do we remove or escape ; (semi-colon) in data retrieved from a MySQL table field?

PHP MYSQL

Hello,

In a MySQL table field, I have ; (semi-colon) in it. When I retrieve the data in a PHP script, I get premature termination of the script because of the ; (semi-colon)


Example of table field:
"The quick brown fox jumps over the lazy dog; so does the elephant"
(semi-colon after dog)


Example of PHP script:

...
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
extract($row);
echo "$contents";
}


What do I do?
gingeraAsked:
Who is Participating?
 
Ray PaseurConnect With a Mentor Commented:
Gingera: the extract() command is not likely to be the problem.  See here:
http://us2.php.net/manual/en/function.extract.php

The data may not be getting stored in the data base in the first place!  It could be an escaping error.

Do you have phpMyAdmin?  If so, look at the data tables to see what is there.

Look at mysql_real_escape_string().  It will help keep the contents clean.
http://us2.php.net/manual/en/function.mysql-real-escape-string.php

You might also want to purify your character set on the in-bound side of the data base.  See code snippet.  HTH, ~Ray
function get_clean_text_string($string) 
{ // FORCE IT TO DB-ACCEPTABLE ESCAPABLE CHARACTERS ONLY
	$new	= trim(ereg_replace('[^\' a-zA-Z0-9&!#$%()"+:?/@,_\.\-]', '', $string));
	$new	= ereg_replace(' +', ' ', $new);
return ( $new );
}

Open in new window

0
 
afzzCommented:
why do you extract? it is unsafe

why dont you try this
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
//extract($row);
echo "$row->contents";
}
0
 
ayus80Connect With a Mentor Commented:
replace your code with this
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo ereg_replace(';', '', $row['contents']);
}

Open in new window

0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
Ray PaseurConnect With a Mentor Commented:
Gingera: Any news to report?

@ayus80: ereg is a little slow in PHP.  For a single character better performance is available from str_replace().

Best, ~Ray
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
    echo str_replace(';', '', $row['contents']);
}

Open in new window

0
 
gingeraAuthor Commented:
Hi Ray, sorry for the delay. I've just managed to test out the suggestions.

Your help is very much appreciated!
0
 
gingeraAuthor Commented:
THANKS!!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.