Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL:插入带有重音或ñ的数据时加密的字;在桌子上_Php_Mysql_Utf 8 - Fatal编程技术网

Php MySQL:插入带有重音或ñ的数据时加密的字;在桌子上

Php MySQL:插入带有重音或ñ的数据时加密的字;在桌子上,php,mysql,utf-8,Php,Mysql,Utf 8,我使用一个简单的Insert将用户注册的数据(带重音的单词,ñ)保存在一个mysql表中,但是当我在本地works中使用这个脚本而没有问题时,但当我在主机中使用时,会被保存为加密的,我不理解 PHP $query = "INSERT INTO usuarios (user, password, name, lastname, phone, email) VALUES ('$user','$pass','$name','$lname','$phone','$email')

我使用一个简单的Insert将用户注册的数据(带重音的单词,ñ)保存在一个mysql表中,但是当我在本地works中使用这个脚本而没有问题时,但当我在主机中使用时,会被保存为加密的,我不理解

PHP

$query = "INSERT INTO usuarios 
    (user, password, name, lastname, phone, email)
        VALUES ('$user','$pass','$name','$lname','$phone','$email')";

$result = mysql_query($query) or die (mysql_error());
与数据库的连接

require_once 'config.php';
    //connecting to mysql
    $con = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
    //selecting database
    mysql_select_db(DB_DATABASE);
    mysql_query('SET names=utf8');  
    return $con;
}
我的表和数据库有utf8,我的HTML格式有utf8

<meta charset="utf-8">
这是存储在表中的结果:

Table: Users

user    |    password    |    name    |       lastname       | phone  | email
________________________________________________________________________________________
soldier       1234            Edgar      52616dc383c2ad72657a   234234  soldier@mail.com
如果一个单词有字母或重音,那么这种情况就会一直发生,并以这种方式插入到表中:/


我希望我已经解释过了

您应该检查创建输出的方式。给定的文本只是“十六进制编码”。请参阅以下代码:

$text = '52616dc383c2ad72657a';
for ($l = strlen($text), $i = 0; $i < $l; ++$i) {
  echo chr(hexdec(substr($text, $i * 2, 2)));
}
$text='52616dc383c2ad72657a';
对于($l=strlen($text),$i=0;$i<$l;++$i){
echo-chr(hexdec(substr($text$i*2,2));
}
结果是
RamÃrez
。“断开”字符只是UTF-8的ASCII表示形式


因此,您的代码很好,只是您用来检查表内容的工具显示了十六进制的字符串表示形式,而不是UTF-8。

请提供更多代码
lastname
显然在某些地方发生了变化。请注意,
mysql\u xx()
函数被认为是过时的。强烈建议升级到
mysqli_xx()
alternatives或PDO库。@DanielM在代码的任何部分都没有更改,只是我使用jquery.ajax()发送表单数据,然后我在函数PHP和Insert中收到了!“就这些了!”斯普德利谢谢你的推荐!
$text = '52616dc383c2ad72657a';
for ($l = strlen($text), $i = 0; $i < $l; ++$i) {
  echo chr(hexdec(substr($text, $i * 2, 2)));
}