看来MySQL的运算符的行为就像=运算符。
以下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
) );
我在这里做错什么了?
发布于 2014-10-09 02:55:31
请仔细阅读mysql模式匹配语法:http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html。你失去了“%”,就像匹配一样:
$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
) );
https://stackoverflow.com/questions/26276489
复制相似问题