使用 URL 搜索附件 ID(区分大小写)

Search for attachment ID with URL (Case Sensitive)

我正在尝试导入产品图片并在 sheet 中包含它们的 URL。现在有 2 个图像具有相同的名称,但一个是大写字母,另一个是小写字母。例如,图片名称为ABC.jpg,其他图片名称为abc.jpg。当我 运行 我的查询返回两条记录时。

这是我的查询:

  $wpdb->get_results(
        $wpdb->prepare(
        "SELECT ID as post_id FROM $wpdb->posts WHERE post_type='attachment' AND guid='%s'", $product_img 
  ));

我尝试使用排序规则,但它也返回相同的结果。

如何解决这个问题?

您可以使用 BINARY 关键字进行比较区分大小写。

$wpdb->get_results(
        $wpdb->prepare(
        "SELECT ID as post_id FROM $wpdb->posts WHERE post_type='attachment' AND BINARY guid='%s'", $product_img 
  ));

请注意,这可能会影响所涉及列的索引。

显示其有效的示例:

mysql> select 'ABC.jpg'='abc.jpg';
+---------------------+
| 'ABC.jpg'='abc.jpg' |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)

mysql> select BINARY 'ABC.jpg'='abc.jpg';
+----------------------------+
| BINARY 'ABC.jpg'='abc.jpg' |
+----------------------------+
|                          0 |
+----------------------------+
1 row in set (0.01 sec)

mysql> 

另一种选择是更改相关列的排序规则,使其区分大小写。参见 this answer

区分大小写的文档 is here