2017-01-02 9 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); 

I出力526文字列(クエリ1)は、それが正しい結果を与える

は、しかし、私はすべてのポストは、そのユニークなIDを持っているので、出力はVARと一緒にいたいです。

私もそれがpost_idの

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

として見られていないので、これが失敗した場合に、文字列内の任意のアイデアをVARを入れて試してみましたか?

$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; 

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

特にない文字列に、任意の型変換を行う必要はありません:あなたのテストの

$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"} 

Greetz

+0

編集した質問 –

+0

あなたの '$ nn1'変数は、文字通り' {{post_data:ID}} 'を含み、数字ではありません。 – jeroen

+0

{{post_data:ID}}を数字にするにはどうしたらいいですか? –

答えて

0

なしあなたが作業していることが示さきた1つのクエリを含めるように見えるん。 $nnint 526を含む必要があります。

完全公開:私はWP開発者ではなく、'{{ post_data:ID }}'から256にどのようになったのかわかりません。string(18) "526"は私にとって非常に奇妙な出力のようです。

+0

これで、wpdbの表示エラーを有効にすると、次のエラーが表示されます。 '{post_data:ID}}の近くで使用し、'%pdf '' 1行目のように指示する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルをチェックしてください。 '{{post_data:ID}} 'を使用して投稿のIDを取得すると、ビジュアルコンポーザープラグインがどのように動作するのですか。 ($ nnをダンプすると、ポストIDに対応する値の文字列が明瞭にダンプされます。 –

関連する問題