2013-02-15 124 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