有人可以告诉我我做错了什么。 我有一个表单,我将数据作为文本插入到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 :(得分: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