看起来 MySQL 的 LIKE 运算符的行为类似于 = 运算符。
以下 MySQL 查询返回预期结果(1 项):
$meta_key = '_locality';
$meta_value = 'The Hague';
$post_ids = $wpdb->get_col( $wpdb->prepare(
"
SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = %s
AND meta_value LIKE %s
",
$meta_key,
$meta_value
) );
但是以下仅包含原始 meta_value 的一部分,返回一个空数组:
$meta_key = '_locality';
$meta_value = 'The';
$post_ids = $wpdb->get_col( $wpdb->prepare(
"
SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = %s
AND meta_value LIKE %s
",
$meta_key,
$meta_value
) );
我在这里做错了什么?
最佳答案
请仔细阅读mysql模式匹配语法:http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html 。您因 LIKE 匹配而丢失 '%':
$meta_key = '_locality';
$meta_value = '%The Hague%';
$post_ids = $wpdb->get_col( $wpdb->prepare(
"
SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = %s
AND meta_value LIKE %s
",
$meta_key,
$meta_value
) );
关于MySQL LIKE 运算符的行为类似于 = 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276489/