-1

我正在尝试使用PHP to MySQL. 当我尝试导入时,我得到了一些奇怪的字符,这些字符也没有正确添加到database table.

Product Name on CSV File

Alva Cook'on Braadpan Lavendelblauw ovaal 24 厘米 – 4,2 升

导入功能执行时我得到的产品名称

Alva Cook'on Braadpan Lavendelblauw ovaal 24 厘米 – 4,2 升

我的代码就像

while (($emapData = fgetcsv($filepath, 10000, ",")) !== FALSE)
{
    $pd_name=  ($emapData[1]);
}

我将此功能用作解决方案,它在导入页面上正确显示产品名称

$pd_name=mb_convert_encoding(($emapData[1]), 'UCS-2LE', 'UTF-8');

Output ~ Alva Cook'on Braadpan Lavendelblauw ovaal 24 cm – 4,2 Liter

但是,当我使用mysql_real_escape_string如下方式将名称插入 db 表时,它添加了很多slashes并且无法正常工作。

$pd_name=mysql_real_escape_string(mb_convert_encoding(($emapData[1]), 'UCS-2LE', 'UTF-8'));


Output ~ A\0l\0v\0a\0 \0C\0o\0o\0k\0\'\0o\0n\0 \0B\0r\0a\0a\0d\0p\0a\0n\0 \0L\0a\0v\0e\0n\0d\0e\0l\0b\0l\0a\0u\0w\0 \0o\0v\0a\0a\0l\0 \02\04\0 \0c\0m\0 \0 \04\0,\02\0 \0L\0i\0t\0e\0r\0

SQL database表格支持UTF,当我们正常使用表格添加产品时,我们不会遇到这个问题,任何人都知道如何解决这个问题。谢谢你

4

1 回答 1

-1

mysql_real_escape_string您应该从该功能已被弃用的事实开始:

警告 此扩展在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此函数的替代方法包括: mysqli_real_escape_string() PDO::quote()

然后你应该mysqli_real_escape string结合使用mysqli_set_charset

官方 PHP 文档:

于 2016-09-01T17:22:37.243 回答