web-dev-qa-db-ja.com

wpdbで内部結合を書く

私はワードプレスでSQLインナージョインの構文を書くのに問題がある、このロジックは間違いなく動作するはずです、私はphpmyadminでこれを試してみました、それはうまく動作

SELECT booking_calendars.cal_name
FROM booking_calendars 
INNER JOIN booking_reservation 
ON booking_calendars.id = booking_reservations.calendar_id
WHERE status LIKE 'pending'

しかし、それはワードプレスではありません

$pending_reservations = $wpdb->get_results(" 
    SELECT booking_calendars.cal_name
    FROM'.$wpdb->prefix.'booking_calendars AS booking_calendars
    INNER JOIN' . $wpdb->prefix.'booking_reservation AS booking_reservations
    ON booking_calendars.id =  booking_reservations.calendar_id
    WHERE status LIKE 'pending'");

その後

echo "<h2>Pending Reservation: </h2><br>";
        var_dump( $pending_reservations);
        if($pending_reservations>0)
        {
        foreach ( $pending_reservations as $pending_reservation ) 
        {
            echo "<label>". $pending_reservation->cal_name."</label><br>";
        }
    }else{
        echo "<label>No Pending Reservation</label><br>";
    }

私は$pending_reservationsをvar_dumpedし、それはwordpressでarray(0) { }を返します

1
Mina Ragaie

あなたの時間と@czerspalaceのおかげで私は二重引用符でクエリを始めて、それから一重引用符でそれを分離しました、そしてエコー出力を見た後私はFromtable nameの間にスペースがない

これが正しい方法です

$pending_reservations = $wpdb->get_results(' 
    SELECT booking_calendars.cal_name
    FROM '.$wpdb->prefix.'booking_calendars AS booking_calendars
    INNER JOIN '. $wpdb->prefix.'booking_reservation AS booking_reservations
    ON booking_calendars.id =  booking_reservations.calendar_id
    WHERE status LIKE "pending"');
2
Mina Ragaie