为什么这个WordPress $ wpdb查询不起作用?

时间:2010-06-16 12:50:40

标签: wordpress

我正在做以下事情:

$type = 'attachment';
$images = $wpdb->get_results($wpdb->prepare('

                SELECT p.*
                FROM wp_%d_posts p
                WHERE p.post_parent =%d
                AND p.post_type = "%s"


    ', $blog_id, $page->ID, $type),OBJECT);


var_dump($images);  

如果我删除'AND p.post_type =“%s”'行,那么我会返回结果,否则我会返回一个空数组。如果我在mysql客户端中直接针对数据库运行查询,我会得到结果。

没有错误,只有空结果集。我在我的文件中做了类似的查询,他们正在工作,所以我不是在寻找“不要那样做”的样式回复。我只需要理解为什么这不起作用并修复它。

PHP 5.3,MYSQL 5.1。 WordPress MU 2.9.2

1 个答案:

答案 0 :(得分:0)

不引用"%s"。在WordPress网站上,“请注意,您不必担心引用字符串。不要将变量直接传递给SQL查询,而是使用%s占位符表示字符串,使用%d替换整数。 “

示例:

$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id ) );