Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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,所以我正在为Shopify开发一个应用程序。由于Shopify的工作方式,我们不得不按名称与供应商打交道,而不是使用数字uid 这给我们带来了一些问题。我们有一个从Shopify导入数据库的供应商,名为“ColecciÃn Luna”。做好以下工作: SELECT email FROM vendors WHERE name=('Colección Luna') LIMIT 1 这将返回我们正在查找的数据。但是,在php中,如果我们执行以下操作: $row = mysql_fetch_row(

所以我正在为Shopify开发一个应用程序。由于Shopify的工作方式,我们不得不按名称与供应商打交道,而不是使用数字uid

这给我们带来了一些问题。我们有一个从Shopify导入数据库的供应商,名为“ColecciÃn Luna”。做好以下工作:

SELECT email FROM vendors WHERE name=('Colección Luna') LIMIT 1
这将返回我们正在查找的数据。但是,在php中,如果我们执行以下操作:

$row = mysql_fetch_row(mysql_query("SELECT name FROM vendors WHERE name=('Colección Luna') LIMIT 1"));

echo $row[0];
SELECT email FROM vendors WHERE name=('Colecciu00f3n Luna') LIMIT 1
这将输出:

Colecciu00f3n Luna
这是一个问题,因为在我们处理的所有情况下,我们都使用供应商名称作为uid。例如,使用从数据库中获取的名称查找电子邮件会导致sql语句如下所示:

$row = mysql_fetch_row(mysql_query("SELECT name FROM vendors WHERE name=('Colección Luna') LIMIT 1"));

echo $row[0];
SELECT email FROM vendors WHERE name=('Colecciu00f3n Luna') LIMIT 1
由于字符的差异,最终无法找到我们要查找的数据

我假设php在默认情况下是用utf-8编码字符串的,有没有办法强制它以与数据库相同的格式输出字符串


非常感谢。

您的编码处理搞砸了。您需要将数据库和PHP修复为MySQL编码处理,以正确的形式处理字符。“ó”不是你要找的角色(手击)。嗯,实际上这很有道理。你能举一个简单的例子,说明我如何正确处理从shopify获取数据和将数据存储到数据库之间的编码吗?可能重复,-参见这两个感谢你的建议,这真的很有帮助!