-1

そのため、WordPress サイトのレポート機能に使用しているこのプラグインに WHERE クエリを追加する必要があります。各更新を管理するためのデータがそれほど多くないため、別の列に追加してその列の値でフィルター処理する以外に何もする時間がありません。追加した列のデフォルト値は 0 ですが、新しい人が追加された年を表す新しいエントリを追加します。ただし、列の値に基づいてフィルター処理すると、クエリ全体が壊れて表示されません。理由がわかりません。これは、結果を表示するクエリの設定に関するセクションです。

<?php

$sql = "SELECT COUNT(*) FROM " . $wpdb->prefix . "presidentsreport_breakdown WHERE list_id = " . $atts['list_id'];
    $total_breakdowns = $wpdb->get_var($sql);

    $sql = "SELECT p.person_id, p.name, p.notes, p.school_year, b.breakdown_id, b.name as breakdown, b.description as breakdown_description FROM " . $wpdb->prefix . "presidentsreport_person p INNER JOIN " . $wpdb->prefix . "presidentsreport_breakdown b ON b.breakdown_id = p.breakdown_id INNER JOIN " . $wpdb->prefix . "presidentsreport_list l ON l.list_id = b.list_id";
    $clean_where = " WHERE l.list_id = " . $atts['list_id'];
    $where = "";
    if($search != ''){
        $where = " AND (p.name LIKE %s)";
        $arg = '%' . $search . '%';
        $args = array($arg);
    }

    $where = $wpdb->prepare($where, $args);

    $order = " ORDER BY b.sort_order, b.breakdown_id, p.sort_name, p.name, p.person_id";
    $results = $wpdb->get_results($sql . $clean_where . $where . $order);

?>

変数 $where に何かを追加すると、クエリ全体が壊れます。だから私が追加すると

<?php

$where = " WHERE p.school_year <= 2011";

?>

また

<?php

$where = " WHERE p.school_year = 0";

?>

何も表示されません。最後の例では、デフォルト値が 0 の場合、関係なくすべてが表示されます。読んでくれてありがとう!

4

2 に答える 2

0

どこに WHERE は必要ありません。

于 2013-11-06T22:36:50.393 に答える