Scrivere INNER JOIN in wpdb

17 set 2015, 20:50:19
Visualizzazioni: 14.4K
Voti: 1

Ho un problema nello scrivere la sintassi SQL Inner Join in WordPress, Questa logica dovrebbe funzionare sicuramente, l'ho provata in phpmyadmin e funziona bene

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

ma in WordPress non funziona

$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'");

e poi

echo "<h2>Prenotazioni in sospeso: </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>Nessuna prenotazione in sospeso</label><br>";
    }

Ho fatto var_dump di $pending_reservations e restituisce array(0) { } in WordPress

3
Commenti

Che ne dici di questo? "SELECT booking_calendars.cal_name FROM {$wpdb->booking_calendars} AS booking_calendars INNER JOIN {$wpdb->booking_reservation} AS booking_reservations ON booking_calendars.id = booking_reservations.calendar_id WHERE status LIKE 'pending'"

Mayeenul Islam Mayeenul Islam
17 set 2015 21:00:37

Hai provato a fare echo della tua query per vedere cosa viene generato? Immagino che stia cercando di interrogare una tabella wp_booking_calendars visto che stai aggiungendo $wpdb->prefix

czerspalace czerspalace
17 set 2015 21:11:12

@czerspalace ottimo punto :)

Mina Ragaie Mina Ragaie
17 set 2015 21:16:56
Tutte le risposte alla domanda 1
0

grazie per il tuo tempo e grazie a @czerspalace ho iniziato la query con doppie virgolette e poi l'ho separata con apici singoli e dopo aver guardato l'output dell'echo ho scoperto che non c'erano spazi tra From e nome tabella

questo è il modo corretto

$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"');
17 set 2015 22:05:06