Soluzione veloce: Nella funzione $wpdb->prepare() va aggiunto almeno un argomento, che può essere anche array(), nella maniera seguente $wpdb->prepare( “SELECT * FROM tabella” , array() ).
Questo errore si presenta perché nella funzione $wpdb->prepare() manca un argomento, ovvero quello dei parametri da “preparare” dentro la query. Supponiamo per esempio di avere una variabile $id che vada inserita in una query. La seguente operazione sarebbe sbagliata:
1 |
$wpdb->query( $wpdb->prepare( "SELECT * FROM tabella WHERE id = $id" ) ); |
L’errore sarebbe sia pratico che concettuale. Anzitutto questa scrittura di per se non necessita del $wpdb->prepare() dal momento che la variabile è già inserita nella stringa.
In secondo luogo la definizione della funzione prevede l’utilizzo di almeno due argomenti, come descritto qui: wpdb::prepare( string $query, array|mixed $args )
La funzione corretta sarebbe:
1 |
$wpdb->query( $wpdb->prepare( "SELECT * FROM tabella WHERE id = %d" , $id ) ); |
Oppure:
1 |
$wpdb->query( $wpdb->prepare( "SELECT * FROM tabella WHERE id = %d" , array($id) ) ); |