web-dev-qa-db-ja.com

$ wpdb-> get_results(...)は正しい問い合わせにもかからず空の配列を返す

タイトルが暗示するように、私は結果を得るために$ wpdb-> get_resultsを取得するようには思えません。 「生の」クエリを実行することは成功しますが、これは奇妙な未知の理由で失敗しているようです。

    global $wpdb;


    $sql = "SELECT *
            FROM something aki, 
                 somethingelse akb, 
                 somethingelseelse ac 
            WHERE aki.keyID = akb.keyID 
              AND akb.someID = ac.someID 
              AND aki.type LIKE '%thing%'";

    $corps = $wpdb->get_results($sql, OBJECT);

    var_dump($corps);
6
1Up

問い合わせの前に$wpdb->show_errors( true )を使って、どんなエラーが戻ってくるか確かめてください。

私の問題は(同じことを経験したことがあるので)、クエリ内で$wpdb->postsの代わりにwp_postsを使用する必要があることです。テーブルのプレフィックスは、時間に応じてWPインストールからインストール、または同じインストールでさえ変更できます(たとえば、管理者は好きなときにプレフィックスを変更できます)。それで、そのような質問を書くべきです:

$query = "select <stuff here> from $wpdb->posts where <stuff here>";
2
NoOne

少し遅くなるかもしれませんが、wordpressで必要な "prepare"呼び出しが欠けています。

$Table_Name    = $wpdb->prefix.'Your Table Name';
$sql_query     = $wpdb->prepare("SELECT * FROM $Table_Name WHERE aki.keyID=%d AND akb.someID=%d AND aki.type like %s", akb.keyID, ac.someID, ''%thing%');
$result        = $wpdb->query( $sql_query ); 

配列内に複数の結果があります。

1
Debbie Kurth