2013-02-15 126 views
0

有人可以告诉我什么我做错了。 我有一个形式和即时插入数据到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']}"); 
} 
?> 
+0

是你的[整理](http://dev.mysql.com/doc/refman /5.5/en/charset-applications.html)? – hd1 2013-02-15 08:50:16

+0

似乎你已将'magic_quotes_gpc'设置为开启。 – 2013-02-15 11:37:39

回答

0

两件事情。

1)有人会告诉你停止使用mysql_ *函数并使用PDO来代替。这可能会大大帮助你。 2)这些附件是协助与插入特殊字符和防止SQL注入。我一定要完全实现这一点,你应该使用一整套预防措施。

坦率地说,我会使用准备好的语句等切换到PDO的方式。这将减少失败的可能性并提高可靠性。你可能会发现你不需要修改这些问题。

1

为了保存字符串,撇号是正常的。并避免sql injurctions 想象你的查询在中间有一个'。它会像where name = 'your's'这会导致错误。

你可以做的是当你获取你的数据。您可以通过在您的代码中添加stripslashes($mystring);来删除\

0

为什么使用adslashes()函数?是防止SQL注入的例子?
改为使用标准功能mysql_real_escape_string()。它是安全的,可以解决问题。
并记住,这不是关系到你所使用的扩展,因为有人说,如果你想要一些特殊的字符插入到你的MySQL数据库则使用Unicode甲.SET的使用PDO扩展例如

0

将表格整理为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); 

更多信息检查波纹管link.it可能是有用的为你..

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