I have defined my database table names as constants in a base class and use them throughout my code.
protected const MAP_KEY_TABLE = 'eds_map_keys';
If I use them like this I get a warning to use place holders.
$keys = $wpdb->get_results(
'SELECT * FROM ' . self::MAP_KEY_TABLE . ' WHERE key_type = "map_key"',
OBJECT
);
$mapkey = $keys[0]->key_value;
if I use place holders like this:
$keys = $wpdb->get_results(
$wpdb->prepare(
'SELECT * FROM %1s WHERE key_type = "geo_key";',
self::MAP_KEY_TABLE
),
OBJECT
); // db call ok.
$map_key_geo = $keys[0]->key_value;
I get a warning that: "message": "Complex placeholders used for values in the query string in $wpdb->prepare() will NOT be quoted automagically. Found: %1s."
As suggested in a comment I tried $1$s but the warning still persists.
WP Version 6.1.1, PHP Version 8.0.18, PHP_CodeSniffer version 3.7.1
I don't know if the guidelines are version specific but they were installed like this.
composer require --dev wp-coding-standards/wpcs
composer require --dev dealerdirect/phpcodesniffer-composer-installer
I'd really like to get rid of the messages about coding style but have been stuck on this one for a while. Any suggestions greatly appreciated.