在mysql中插入特殊字符?

时间:2013-02-15 08:46:21

标签: php mysql

有人可以告诉我我做错了什么。 我有一个表单,我将数据作为文本插入到mysql中,但当你输入撇号或类似的东西时,它会放入一个\。

有人可以推荐如何让我的mysql允许特殊字符吗?

这是我的html表单:

<form action="includes/changebio.php" method="post" id="form1">         
 <textarea id="bio" 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>

我的mysql声明:

<?php
require('_config/connection.php');
?>
<?php 
session_start();
include '_config/connection.php'; 
$bio = $_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 ='".addslashes($bio)."' WHERE id=".$_SESSION['user_id'].""); 
}
    if($sql) 
    { 
header("Location: {$_SERVER['HTTP_REFERER']}");
}
?>

4 个答案:

答案 0 :(得分:1)

撇号是正常的,以便保存您的字符串。并避免sql伤害 想象你的查询中间有一个'。它会像where name = 'your's'那样会导致错误。

您可以执行的操作是获取数据。您可以在代码中添加\来删除stripslashes($mystring);

答案 1 :(得分:0)

2件事。

1)有人会告诉你停止使用mysql_ *函数并改用PDO。这可能对您有很大帮助。 2)通过插入特殊字符和防止SQL注入,addslashes可以协助。我肯定会完全实现这一点,你应该使用一整套预防措施。

说实话,我会使用准备好的语句等切换到PDO方式。这样可以减少失败的可能性并提高可靠性。您可能会发现不需要使用addslashes来解决这些问题。

答案 2 :(得分:0)

为什么使用adslashes()功能?例如,它是为了防止SQL注入吗? 请改用标准函数mysql_real_escape_string()。它是安全的,可以解决问题 并且请记住,它与您正在使用的扩展程序无关,因为有些人说使用PDO扩展程序,例如

答案 3 :(得分:0)

如果你想在你的Mysql数据库中插入一些特殊的字符,那么使用Unicode formate .set将表的排序设置为utf8_unicode_ci。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />添加到您的html文件头中。

使用以下代码进行数据库连接。

define('HOSTNAME', 'localhost');
define('USERNAME', 'user_name');
define('PASSWORD', 'password');
define('DATABASE', 'database_name');

$dbcon= mysql_connect(HOSTNAME, USERNAME, PASSWORD); 
mysql_query("SET character_set_results=utf8", $dbcon);
mb_language('uni');
mb_internal_encoding('UTF-8');
mysql_select_db(DATABASE, $dbcon);
mysql_query("set names 'utf8'",$dbcon); 
mysql_query("SET character_set_client=utf8", $dbcon);
mysql_query("SET character_set_connection=utf8", $dbcon); 
mysql_query("SET character_set_results=utf8", $dbcon);

了解更多信息请查看bellow link.it对您有用..

http://www.oyecoder.com/2013/02/store-any-language-data-in-your-mysql.html