【发布时间】:2016-02-04 12:09:27
【问题描述】:
我在数据库中有 2 个表:images_1 和 wp_posts,其中一个条目是图像文件名,而另一个条目具有相似的帖子标题名称,只是在 wordpress 数据库中该条目具有附加到它的图像文件类型。由于我是从table_1 导入的,因此我需要在导入之前检查该帖子是否已存在于wp_post 表中。
所以我的table_1 的结构有点像这样:
table_1
filename_uploaded
-----------------
asd654as8_dasd3
a32asd586as_d6584
asdad_asdlf
虽然我的wp_post 表有,但对于post_type = attachment
wp_post
post_title
----------
asd654as8_dasd3.jpg
a32asd586as_d6584.jpg
asdad_asdlf.png
所以我尝试了:
$img_query = "SELECT *
FROM table_1
WHERE NOT EXISTS (SELECT *
FROM wp_posts
WHERE wp_posts.post_title LIKE table_1.filename_uploaded
AND wp_posts.post_type = 'attachment')";
$img_query_query = $wpdb->get_results($img_query, ARRAY_A);
这不起作用。
问题是我无法检查它们是否相等,因为它们不相等。它们相似,但post_title 具有文件类型扩展名。我搜索了有关使用regular expressions in mysql queries 的信息,但我不知道该怎么做。
任何帮助都可以。
编辑:
我只是注意到我得到了
[非法混合排序规则 (utf8_general_ci,IMPLICIT) 和 (utf8_swedish_ci,IMPLICIT) 用于操作 'like']
我的table_1 是swedish_ci,wp_post 是general_ci。
我尝试在末尾添加COLLATE utf8_swedish_ci,但没有成功。
我尝试了遵循 Gordon Linoff 的建议
"SELECT t_img.*
FROM img_images t_img
WHERE NOT EXISTS (SELECT *
FROM wp_posts p
WHERE p.post_title LIKE CONCAT(t_img.filename_uploaded, '.%')
AND p.post_type = 'attachment') COLLATE utf8_swedish_ci";
但没有运气。
【问题讨论】:
标签: php mysql sql regex wordpress