web-dev-qa-db-ja.com

$ wpdbを使用するとDBエラーが発生する

私は$wpdbオブジェクトを使用して、SQLテーブルから内容を表示しようとしています。問題は、クエリで使用しようとするとSQLエラーが表示されることです。私がやろうとしたことは私があなたに示すものよりももう少し複雑です、しかし、私はエラーがどこから来ることができるかを確かめるために私の質問を徐々に単純化しましたが、決して見つかりませんでした。

だからここに私が最後に試したものです:

<?php

global $wpdb;
$wpdb->show_errors();
$tableCustom = 'join_users_defis';

$requeteAffichage = $wpdb->get_results('
SELECT * 
FROM $wpdb->postmeta
');

var_dump($requeteAffichage);

?>

私には、標準のWordPressテーブルであるテーブル{$table_prefix}_postmeta(他のテーブルで試した)の内容をダンプすることになっています。代わりに、次のエラーを出力します($wpdb->show_errors();のおかげで)。

WordPressデータベースエラー:[あなたのSQL構文にエラーがあります。 2行目でnear ->_postsを使用する正しい構文については、MariaDBサーバーのバージョンに対応するマニュアルを確認してください。

私の現在のインストールはMariaDB 10.1.16 / Apache / PHP 5.6.24でローカルに(XAMPP)実行されます

念のために、私は私のWordPressのインストールプレフィックスで直接問い合わせをしてみました、そしてそれはうまくいきました。

それは私のインストールの問題なのでしょうか、それとも私が見逃したのでしょうか。私はこれについていくつかの助けを借りることができます。

2
Fl-0

エラーメッセージに従った構文エラーです。以下のような凝視はあなたのために働くかもしれません。

global $wpdb;
$wpdb->show_errors();
$tableCustom = 'join_users_defis';

$sql = "SELECT * FROM {$wpdb->postmeta}";
$requeteAffichage = $wpdb->get_row( $sql );

//or $requeteAffichage = $wpdb->get_results( $sql );

var_dump($requeteAffichage);
3
Anwer AR

$wpdb->はクエリに属していません。

変化する

$requeteAffichage = $wpdb->get_results("
SELECT * 
FROM $wpdb->postmeta
");

$prefix = $wpdb->prefix;
$postmeta = $prefix . 'postmeta';
$requeteAffichage = $wpdb->get_results("
SELECT * 
FROM $postmeta
");

(または、別のテーブルプレフィックスを使用している場合は、そのプレフィックスをwp_に置き換えます。)

1
WebElaine

文字列内の変数を正しく解釈するには、PHPに二重引用符で囲まれた文字列リテラルを使用する必要があります。変化する:

$wpdb->get_results('SELECT * FROM $wpdb->postmeta');

に:

$wpdb->get_results("SELECT * FROM {$wpdb->postmeta}");
1
Yoav Kadosh