我正在尝试检查sql语句中的文件名,我正在使用PHP,在我正在构建的wordpress模板中。
基本上我正在尝试使用LTRIM
仅返回最后有_a
的图片。
例如,我在一系列文件夹中有一堆图像
clientone_a.jpg
clienttwo_b.jpg
这是我现在使用的,但它不起作用;
$query = "
SELECT F.field_value, P.alttext, P.filename, P.description, p.galleryid,
G.path
FROM wp_nggcf_field_values F,
wp_ngg_pictures P,
wp_ngg_gallery G
WHERE F.fid=1
AND (F.field_value='".$data."')
AND F.pid = P.PID
AND P.galleryid = G.gid
AND LTRIM(P.filename,'_') = '_a.jpg'
";
$caseStudiesResults = $wpdb->get_results($query);
这只是问题的最后一个LTRIM(P.filename,'_') = '_a.jpg'
,如果它没有带回所有图像,我只是在带回_a
之后。
关于我哪里出错的任何想法?
由于
答案 0 :(得分:2)
问题是你使用了错误的功能。 LTRIM()
只是移除了前导空格。您要找的是SUBSTRING_INDEX()
AND SUBSTRING_INDEX(P.filename, '_', -1) = 'a.jpg'
-1
告诉它返回最终分隔符右侧的所有内容(-2
将是第2个到最后分隔符右侧的所有内容,1
将是所有内容第一个左边等等)...
编辑:就测试而言,您可以通过以下方式测试字符串函数:
SELECT SUBSTRING_INDEX('test_a.jpg', '_', -1) = 'a.jpg'
运行它,看它是否有效(它对我有用)。通过设置静态值,您可以试用它而无需运行整个大查询...
答案 1 :(得分:1)
替代substring_index
select substring('clientone_a.jpg', -6)='_a.jpg';