Wordpress wpdb не вставляет / не обновляет данные HTML - PullRequest
0 голосов
/ 16 мая 2019

Проще говоря, мой PHP-код генерирует кучу HTML.Затем я хочу обновить запись в базе данных примерно так:

$wpdb->update("wp_table",
                array( 'content' => $html ),
                array( 'id' => 1 ),
                array( '%s' ),
                array( '%d' )
);

Это просто не работает.Ничего в базе данных не меняется.

Для отладки я поместил точно такой же код выше с одним незначительным изменением, и он РАБОТАЕТ :

$wpdb->update("wp_sn_cached_popular_display",
                array( 'content' => "hello" ),
                array( 'id' => 1 ),
                array( '%s' ),
                array( '%d' )
);

(Iпоменял $html на прямую строку.)

Я даже не могу понять почему, и я много с этим поиграл.Я даже сделал это, и это РАБОТАЕТ тоже:

$string = "hello";

$wpdb->update("wp_sn_cached_popular_display",
                array( 'content' => $string),
                array( 'id' => 1 ),
                array( '%s' ),
                array( '%d' )
);

Это всего лишь одна переменная $html, вызывающая эту функцию, или что-то еще?

Компиляция переменной $html - это куча таких вещей:

$html .= '<li>';
$html .= '<div class="upcoming-left">';
$html .= '<time datetime="' . $date . '" class="icon">';
$html .= '<em>' . $date_day.'</em>';
$html .= '<strong>' . $date_month . '</strong>';
$html .= '<span>' . $date_num . '</span>';
$html .= '</time>';
$html .= '</div>';
$html .= '<div class="upcoming-right">';
$html .= '<span class="upcoming-title"><a href="' . $upcoming_link . '">' . $upcoming_title . '</a></span>';
$html .= '<span class="upcoming-desc">' . $upcoming_desc . '</span>';
$html .= '<div class="clear"></div>';
$html .= '</div>';
$html .= '</li>';
//...

Есть идеи, почему это так?

Бонусное время для развлечения: похоже, это работает на моемлокальный xampp insall, а не живой сайт.

1 Ответ

1 голос
/ 16 мая 2019

Это может быть проблемой с табличными типами данных. https://www.w3schools.com/sql/sql_datatypes.asp в зависимости от того, какая таблица установлена ​​в нем, может не поддерживаться длина строки вашей HTML-переменной или некоторые символы в ней.

Похоже, вы конкаталируете свой .html var несколько раз. Это довольно длинная строка в конце. чтобы проверить это, попытайтесь сохранить очень длинную введенную вручную строку. попробуйте со специальными символами. посмотрите на структуру таблицы. Это всего лишь некоторые идеи и мои мысли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...