2013-02-15 3 views
0

может кто-нибудь, пожалуйста, покажите мне, что я делаю неправильно. У меня есть форма и im, вставляющая данные в mysql как текст, но когда у типа апострофы или что-то подобное, он помещает a. In.Вставка специальных символов в 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

+0

Кажется, у вас есть 'magic_quotes_gpc' установлен в положение on. –

ответ

0

2 вещи.

1) кто-то скажет вам прекратить использование функций mysql_ * и вместо этого использовать PDO. Это может помочь вам значительно. 2) Умывальники есть до Помогите с вставкой специальных символов и предотвращения инъекции SQL. Я уверен, что вы достигнете этого полностью, есть целый ряд мер предосторожности, которые вы должны использовать.

Честно говоря, я бы переключился на PDO-способ вещей, используя подготовленные заявления и т. Д. Это уменьшит вероятность сбоя и повышения надежности. Вы можете обнаружить, что вам не нужны адреналины, чтобы исправить эти проблемы.

1

Апострофы нормальны для сохранения вашей строки. и избегайте sql injuections представьте, что ваш запрос имеет ' посередине. это будет похоже на where name = 'your's', что приведет к ошибке.

что вы можете сделать, когда вы извлекаете данные. вы можете удалить \, добавив в свой код stripslashes($mystring);.

0

Почему вы используете функцию adslashes()? это, например, для предотвращения внедрения SQL?
использование стандартная функция mysql_real_escape_string() вместо. это безопасно и решит проблему.
и иметь в виду, что это не связано с расширением вы используете, так как некоторые люди говорили, что использовать PDO расширение, например

0

, если вы хотите, чтобы вставить специальные символы в вас Mysql базы данных, то использовать формиат Unicode .С Сопоставление таблицы с 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