2015-12-01 9 views
0

У меня проблема с запросом mysql. Это код:Утилита utf8 mysql не работает

session_start(); 
$db = mysql_connect('localhost', 'user', 'pw') or die(mysql_error()); 
mysql_select_db("wordpress_97") or die(mysql_error()); 

$names=mysql_query('set names utf8'); 

$tempnewpw = md5($tempnewpw); 

$query = mysql_query("UPDATE wordpress_97.tUsers SET passwort = '$tempnewpw' WHERE tUsers.UserID = '$theuserid'") or die(mysql_error()); 

Yes I know that I shouldn't use the mysql_ functions but it's just testing..

И это ошибка:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE wordpress_97.tUsers SET passwort = 'pwinmd5'' at line 1

Я не могу уйти эти Â ...

В базе данных не должно быть проблема - другие запросы работают без проблем с той же структурой.

Любые идеи?

Заранее спасибо

+1

Что произойдет, если вы удалите всю строку и снова запишите запрос, не копируйте ее. –

+0

Возможный дубликат [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – Naruto

+0

@AlexAndrei Спасибо, что это сработало, но теперь я вижу что строка закодирована неправильно - не имеет значения, что я набираю в строке, будет «d41d8cd98f00b204e9800998ecf8427e». – jumpskin

ответ

1

Удалите строку и снова введите ее.
Скорее всего, это символы, переносимые из копирования.

Что касается вашего второго вопроса, то d41d8cd98f00b204e9800998ecf8427e является md5 хэш null или nothing, нулевой длины потока символов в.

На этой линии

$tempnewpw = md5($tempnewpw); 

Убедитесь, что $tempnewpw существует и имеет значение, я должен предложить также использовать различные переменные вместо их по написанию.

+0

Повторная типизация запроса помогла! И я видел, что в моей функции отправки формы была небольшая ошибка -> я написал metod = "post" вместо метода ... Спасибо за помощь с запросом! – jumpskin

+0

Добро пожаловать! –

0

вы можете попробовать добавить эту строку в HTML голову тег:

<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
</head> 
1

Попробуйте этот вариант использования mysql_set_charset

session_start(); # not use for the DB query's 
$db = mysql_connect('localhost', 'user', 'pw') or die(mysql_error()); 

mysql_set_charset('utf8',$db); # add this 

$db_selected = mysql_select_db("wordpress_97",$db); 
//$names=mysql_query('set names utf8'); --- remove 
if (!$db_selected) { 
    die ('Database access error : ' . mysql_error()); 
} 
else{ 
    $tempnewpw = md5($tempnewpw); 

    $query = mysql_query("UPDATE wordpress_97.tUsers SET passwort = '$tempnewpw' WHERE tUsers.UserID = '$theuserid'") 
    or die(mysql_error()); 
} 

В HTML

<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
+0

У меня уже есть метатег, а «mysql_set_charset» ничего не меняет ... – jumpskin

+0

Ваш запрос правильный ?? –

0

Не используйте Word для редактирования. Он вводит забавные символы, такие как hex A0, который через некоторые преобразования становится Â (A-hat и пробел), как видно из вашего текста.

Надеюсь, у вас нет букв с акцентом; Я подозреваю, что они были искалечены другими вещами - например, неспособность быть последовательной в CHARACTER SET.