Я работаю над плагином WordPress и продолжаю получать предупреждение PHPCS, которое я не могу решить. Предупреждение: < /p>
WARNING WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber
Incorrect number of replacements passed to $wpdb->prepare(). Found 3 replacement parameters, expected 2.
< /code>
Вот мой фрагмент кода: < /p>
// Check for image URL or filename in postmeta
if ($attachment_url) {
$attachment_basename = basename($attachment_url);
// Prepare the status placeholders
$placeholders = implode(',', array_fill(0, count($statuses), '%s'));
$meta_url_usage = $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(*)
FROM $wpdb->postmeta pm
JOIN $wpdb->posts p ON p.ID = pm.post_id
WHERE (pm.meta_value LIKE %s OR pm.meta_value LIKE %s)
AND p.post_status IN ($placeholders)",
'%' . $wpdb->esc_like($attachment_url) . '%',
'%' . $wpdb->esc_like($attachment_basename) . '%',
...$statuses
)
);
if ($meta_url_usage > 0) {
return true;
}
< /code>
Что я попробовал: < /p>
Утвердил, что статусы $-это непусты /> < /ol>
Проблема заключается в том, что PHPCS думает, что у меня должно быть только 2 замены (для подобных положений). Но мне нужно передать значения статуса для пункта в IN. Оператор спреда (... $ status) добавляет дополнительные параметры. Как правильный способ справиться с динамикой в предложениях с $ wpdb-> Prepare ()? Или я должен подавить предупреждение? Любое понимание будет высоко ценится!
Подробнее здесь: https://stackoverflow.com/questions/796 ... th-dynamic
ПРЕДУПРЕЖДЕНИЕ PHPCS: неправильное количество замен в $ WPDB-> PREPARE () с динамикой в пункте ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение