搜索带有URL的附件ID(区分大小写)

时间:2018-08-16 11:17:59

标签: wordpress case-sensitive

我正在尝试导入产品图像,并在工作表中包含其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 
  ));

我查看了论坛并尝试使用归类,但这也给我返回了相同的结果。

有人可以帮助我解决此问题吗?我正在尝试从最近两天开始对其进行修复。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用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