/在mysql中使用时出现在文本中?

时间:2013-03-05 12:07:16

标签: php html mysql slash

我有一个html表单,我的网站的用户可以输入,单击提交,然后mysql将其插入到数据库中,并且由于某种原因,当它被提交到我的'bio'列,这是longtext和utf8_unicode_ci格式,如果用户输入jame的显示为jame \'s,我不想要这些斜杠。

有谁知道为什么会这样,我怎么能摆脱斜线?感谢

HTML:

<form action="includes/changebio.php" method="post" id="form1">         
 <textarea id="bio" style="width: 448px; 
    margin-top:3px;
    text-align:left;
    margin-left:-2px;
    height: 120px;
    resize: none; 
    border: hidden;" textarea name="bio" data-id="bio" maxlength="710"><?php echo htmlspecialchars($profile['bio']); ?></textarea>
<input type="image" src="assets/img/icons/save-edit.png"class="bio-submit" name="submit" value="submit" id="submit"/>
</form>

PHP:

<?php ob_start(); ?>
<?php
require_once("session.php"); 
require_once("functions.php");
require('_config/connection.php');
?>
<?php 
session_start();
include '_config/connection.php'; 
$bio = htmlspecialchars($_POST['bio']); 
$result = mysql_query("SELECT bio FROM ptb_profiles WHERE id=".$_SESSION['user_id']."");
if(!$result) 
{ 
echo "The username you entered does not exist"; 
} 
else 
if($bio!= mysql_result($result, 0)) 
{ 
echo ""; 
    $sql=mysql_query("UPDATE ptb_profiles SET bio ='".mysql_real_escape_string($bio)."' WHERE id=".$_SESSION['user_id'].""); 
}
header("Location: {$_SERVER['HTTP_REFERER']}");
?>
<?php ob_end_flush() ?>

3 个答案:

答案 0 :(得分:1)

您的服务器可能已经很老了,它启用了一个名为Magic Quotes的旧PHP“功能”。该功能本来就不应该存在,而你认为​​可以做的最好的就是尝试disable it

答案 1 :(得分:0)

使用strip_slashes

echo strip_slashes($string);

使用此:

<?php echo htmlspecialchars(strip_slashes($profile['bio'])); ?>

答案 2 :(得分:-1)

你在sql查询中mysql_real_escape_string()这会在它成为\之前放入任何'标记'<'

所以\'存储在您的数据库中,然后当您显示输出而不是屏幕时需要删除斜杠,这样您就可以<?php echo stripslashes($profile['bio']); ?&gt;在您的文字区域

请参阅stripslashes()mysql_real_escape_string()

您可能还希望转换为使用PDO或mysqli而不是旧的mysql_函数,因为它们现已弃用