2017-01-02 164 views
1

我添加了一个自定义的Visual Composer元素,并希望输出查询结果。但是,当我输出这个查询(1)时,它会给出其他结果,然后当我输出这个查询(2)。WordPress的SQL查询不同的结果

// declared vars 
global $wpdb; 
$nn = '{{ post_data:ID }}'; 
$nn1 = (string)$nn; 

1) $results2 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = 526 AND guid like '%pdf'", OBJECT); 
2) $results2 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn1." AND guid like '%pdf'", OBJECT); 

当我输出的526字符串(查询1)它给出正确的结果,但是我所要的输出是用var,因为每一个岗位都有其唯一的ID。

我还试图把VAR在一个字符串,因此它不被视为一个POST_ID

$nn = '{{ post_data:ID }}'; 
$nn1 = (string)$nn; 

任何想法的地方,这是失败的?

我已经尝试在此期间:

$nn1 = (string)$nn; 
$nn2 = strval($nn); 
$nn3 = settype($nn, "string"); 

$results1 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn1." AND guid like '%pdf'", OBJECT); 
$results2 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn2." AND guid like '%pdf'", OBJECT); 
$results3 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn3." AND guid like '%pdf'", OBJECT); 
$results4 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = %d AND guid like '%pdf'", $nn3, OBJECT); 

上述所有正在返回一个空字符串,这意味着仍然有一些错误使用var

当我呼应整个字符串它返回正确的MySQL查询:

echo ("SELECT guid FROM wp_posts WHERE post_parent = ".$nn.""); 
//output 
SELECT guid FROM wp_posts WHERE post_parent = 526; 

当我执行该查询,它给了我正确的解决方案:

$results6 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = 526", OBJECT); 
// output 
[6]=>object(stdClass)#8030 (1) { 
["guid"]=> 
string(69) "http://blabla.pdf"} 

格尔茨

+0

我的意思是键入= 526(整数) - 编辑问题 –

+0

你的'$ nn1'变量字面上包含'{{post_data:ID}}'而不是数字。 – jeroen

+0

如何将{{post_data:ID}}放入数字中? –

回答

0

你的测试似乎都不包括你已经证明是工作的一个查询:

$GLOBALS['wpdb']->get_results(
    "SELECT guid FROM wp_posts WHERE post_parent = $nn", 
    OBJECT 
); 

有没有必要做任何类型的转换,特别是不要字符串。 $nn应该包含int 526

完全披露:我不是WP开发者,我不知道你是如何从'{{ post_data:ID }}'256,也string(18) "526"似乎是一个非常奇怪的输出给我。 (groetjes aan de daddykaters!)

+0

因此,当我激活wpdb的显示错误,它给了我下一个错误:'你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在第1行附近使用正确的语法并使用附近的'%pdf''。'我使用'{{post_data:ID}}'获取帖子的ID,这是视觉作曲家插件的工作原理。 (当我转储$ nn时,它清楚地转储了一个字符串,其值与帖子ID相对应。 –