gpt4 book ai didi

php - mysql 查询手动工作,但从代码运行时不返回任何结果

转载 作者:行者123 更新时间:2023-11-29 01:48:12 36 4
gpt4 key购买 nike

我使用带有“Like”的非常简单的查询来按名称查找产品

SELECT p_pid, p_name, p_cat
FROM products
WHERE p_sid=346 AND p_name LIKE 'product name here in utf-8 encoding, can be various languages'
LIMIT 1

当我从具有有效产品名称的代码运行此查询时,我没有得到任何结果。如果我复制查询(由 php 回显到浏览器)并在 mysql 查询浏览器中手动运行它,我会得到一个结果。知道我哪里错了吗?

注意事项:

1.查询没有错误。只是没有结果。2. 我正在使用 ezsql 库3. 代码运行良好,并在代码中的相同范围内成功地执行了与数据库的其他SELECT。

最佳答案

似乎是编码的问题。

尝试运行这个查询:

SELECT HEX(CAST('product name here in utf-8 encoding, can be various languages' AS BINARY))

ezSQL 和查询浏览器中比较结果。

这将为您提供 MySQL 真正从您的客户端获取并用于比较的二进制流。

如果您在 ezSQL 属性中设置了错误的连接编码,则字符串可能会被破坏(例如,问号而不是 UTF 符号)。

在这种情况下比较当然会失败。

更新:

尝试强制排序不区分大小写:

SELECT  *
FROM table
WHERE field LIKE 'product name here in utf-8 encoding, can be various languages' COLLATE UTF8_GENERAL_CI

此外,您能否发布您的字符串和字段中包含的数据的二进制转储?

SELECT  p_pid, p_name, p_cat,
HEX(CAST(p_name AS BINARY)),
HEX(CAST('product name here in utf-8 encoding, can be various languages' AS BINARY))
FROM products
WHERE p_pid = @pid_of_product_that_should_match_but_it_doesnt

关于php - mysql 查询手动工作,但从代码运行时不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931829/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com