Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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 从脚本在数据库中插入UTF8字符时出现问题_Php_Mysql_Utf 8_Insert - Fatal编程技术网

Php 从脚本在数据库中插入UTF8字符时出现问题

Php 从脚本在数据库中插入UTF8字符时出现问题,php,mysql,utf-8,insert,Php,Mysql,Utf 8,Insert,我有一个小脚本,它通过GET接收一些数据,并将数据插入数据库。我的问题是发送一些UTF-8字符时。scritp接收它们时没有问题,但以一种奇怪的方式插入它们。我在我的页面中打印了查询,用phpmyadmin执行它,这样就可以正常工作了。因此,我的问题是在通过脚本执行查询时(如果使用这些字符执行常量查询,则无法工作)。通过邮寄发送字符是否解决了问题 谢谢您的整个设置必须是UTF-8。这意味着您的网页、PHP、数据库连接和数据库表都必须处于UTF-8模式。鉴于它在管理页面中工作,而不是通过脚本,我猜

我有一个小脚本,它通过GET接收一些数据,并将数据插入数据库。我的问题是发送一些UTF-8字符时。scritp接收它们时没有问题,但以一种奇怪的方式插入它们。我在我的页面中打印了查询,用phpmyadmin执行它,这样就可以正常工作了。因此,我的问题是在通过脚本执行查询时(如果使用这些字符执行常量查询,则无法工作)。通过邮寄发送字符是否解决了问题


谢谢

您的整个设置必须是UTF-8。这意味着您的网页、PHP、数据库连接和数据库表都必须处于UTF-8模式。鉴于它在管理页面中工作,而不是通过脚本,我猜这是您的数据库连接。在执行insert查询之前,请尝试执行一次
set names='utf-8'
,看看这是否解决了问题。如果是这样的话,那么您的数据库连接正在使用其他字符集,并在从PHP->database发送文本时将文本弄乱。

您的整个设置必须是UTF-8。这意味着您的网页、PHP、数据库连接和数据库表都必须处于UTF-8模式。鉴于它在管理页面中工作,而不是通过脚本,我猜这是您的数据库连接。在执行insert查询之前,请尝试执行一次
set names='utf-8'
,看看这是否解决了问题。如果是这样,那么您的数据库连接正在使用其他字符集,并在从PHP->database发送文本时将文本弄乱。

尝试以下方法:

mysql_set_charset('utf8');
试试这个:

mysql_set_charset('utf8');

在查询之前将其添加到php文件中:

mysql_query('SET NAMES utf8');
例如:

//DB connection
$con = mysql_connect('localhost', 'root', '');//db details
if (!$con){
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);//DB name
mysql_query('SET NAMES utf8');
//query
$sql="SELECT * FROM users WHERE uid=".$user_id;// your query
$result=mysql_query($sql);

在查询之前将其添加到php文件中:

mysql_query('SET NAMES utf8');
例如:

//DB connection
$con = mysql_connect('localhost', 'root', '');//db details
if (!$con){
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);//DB name
mysql_query('SET NAMES utf8');
//query
$sql="SELECT * FROM users WHERE uid=".$user_id;// your query
$result=mysql_query($sql);

您需要为Mysql连接指定编码。根据您使用的mysql扩展,函数的名称可能会有所不同:提供更多信息。“以一种奇怪的方式”是没有用的。理想情况下,提供传输或存储的实际字节的hextdump,而不仅仅是从终端窗口剪切和粘贴的文本。这个可能的副本中的答案可以更好地说明这一点。您需要指定Mysql连接的编码。根据您使用的mysql扩展,函数的名称可能会有所不同:提供更多信息。“以一种奇怪的方式”是没有用的。理想情况下,提供传输或存储的实际字节的hextdump,而不仅仅是从终端窗口进行文本剪切和粘贴。这种可能的副本中的答案可以更好地说明这一点。最好使用
mysql\u set\u charset()
而不是
set name
mysql\u set\u charset()的主要优点是因为它更安全。最好使用
mysql\u set\u charset()
而不是
set NAMES
mysql\u set\u charset()的主要优点是更安全。最好使用
mysql\u set\u charset()
而不是
set NAMES
最好使用
mysql\u set\u charset()
而不是
set NAMES