Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
Mysql-插入N'';_Mysql - Fatal编程技术网

Mysql-插入N'';

Mysql-插入N'';,mysql,Mysql,这是一个mysql的小问题,但我最近发现了一个我在阅读SO问题时不理解的查询 mysql_query("SET CHARACTER SET utf8"); mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES (N'$email',N'$pass',N'$fname',N'$lname',N'$phone',N'$city')"); 插入查询是什么意思? 处理UTF8时是否需要这样做 如果我必须

这是一个mysql的小问题,但我最近发现了一个我在阅读SO问题时不理解的查询

mysql_query("SET CHARACTER SET utf8");
mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES (N'$email',N'$pass',N'$fname',N'$lname',N'$phone',N'$city')");
插入查询是什么意思? 处理UTF8时是否需要这样做

如果我必须写同样的查询,我会写:

mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES ('$email','$pass','$fname','$lname','$phone','$city')");
这两者之间有什么区别?

是用于Unicode的数据类型。如果您的数据库没有存储多语言数据,那么您可以继续使用Varchar。例如:N'abc(在您的例子中)只是将字符串转换为unicode

默认情况下,SQL server对varchar使用Windows-1252字符代码。它包含拉丁语言(英语、德语、法语等)的大部分字符,但不包含非拉丁语言(波兰语、俄语等)的字符。如上所述,nvarchar用于解决这个问题,因为它是用于包含那些缺少的字符的Unicode的。这是有代价的,存储nvarchar所需的空间是varchar的两倍


将N放在字符串前面可以确保在将字符放入nvarchar列之前将其转换为Unicode。大多数情况下,您可以不使用N,但我不建议您这样做。安全总比后悔好得多。

文档中对此进行了解释。它叫Ok谢谢,但是
设置字符集utf8
会改变mysql处理varchar/nvarchar的方式吗?是的。。退房