我在数据库中有2个表:images_1
和wp_posts
,其中一个条目是图像文件名,而另一个条目具有相似的帖子标题名称,它是' s只是在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)进行操作'喜欢']
我的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";
但没有运气。
答案 0 :(得分:1)
你很接近但没有考虑后缀。所以:
SELECT t1.*
FROM table_1 t1
WHERE NOT EXISTS (SELECT *
FROM wp_posts p
WHERE p.post_title LIKE CONCAT(t1.filename_uploaded, '.%') AND
p.post_type = 'attachment'
);
答案 1 :(得分:1)
MYSQL See the manual
中有许多字符串函数使用那些你可以做到这一点
.png
这也可以处理任何文件扩展名,因此,如果您上传了.gif
和"ms-appx:///cache/"
以及string
等图片格式,您就会受到保护。
答案 2 :(得分:1)
您需要使用此查询并且不使用类似查询,当您执行pratik
,pratik12
这样的某个用户名时,它会出现问题pratik
并且喜欢给你两个记录
select *
from table_1
left join wp_post on wp_post.post_title = CONCAT(table_1.filename_uploaded,'.jpg')
where wp_post.post_title = null
答案 3 :(得分:0)
如果只是添加的扩展程序,请尝试使用:
...
WHERE wp_posts.post_title LIKE table_1.filename_uploaded + '%'
...
SQL Like运算符:http://www.w3schools.com/sql/sql_like.asp