Php MySQL:插入带有重音或ñ的数据时加密的字;在桌子上
我使用一个简单的Insert将用户注册的数据(带重音的单词,ñ)保存在一个mysql表中,但是当我在本地works中使用这个脚本而没有问题时,但当我在主机中使用时,会被保存为加密的,我不理解 PHPPhp 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')
$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)));
}